ppp: Update to include bug fixes that should be in 2.5.1 but not yet released

Message ID 20240315123806.210103-1-adolf.belka@ipfire.org
State Accepted
Commit c11817a12db5dce22f34f289ff261288c58b2031
Headers
Series ppp: Update to include bug fixes that should be in 2.5.1 but not yet released |

Commit Message

Adolf Belka March 15, 2024, 12:38 p.m. UTC
  - Update from version 2.5.0 to commit e1266c7
- Update of rootfile
- When ppp-2.5.0 was released it had a bug bin it that the lock and run directories
   had non standard defaults but also that if the directory did not exist ppp just
   ignored it and continued to start but would then have error messages in the logs about
   not being able to cretae the lock file
- This issue was raised in the ppp github issues and a set of patches merged into ppp.
- The plan was written in Nov 2023 that this would be released as 2.5.1, however nearly
   three months later there is no sight of 2.5.1 being released and people continue to
   flag up the lock directory issues and have to apply a workaround to create the directory
   in local.rc
- This patch has taken the zip source tarball of master at the commit e1266c7. The zip
   tarball was then extracted and then tar'd back up as a tar.gz file with the version set
   at e1266c7 rather than master. I could not find any other way to get a source tarball\
   created at a certain commit stage.
- The patch ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch had to be updated due to some
   changes in the source files.
- The patch ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch
   was removed as the changes are now built into the source tarball.
- This will need to be tested thoroughly by people with ppp to confirm that the lock
   directory is created if it doesn't exist on the system. I can't test that as I have
   no access to a ppp connection system.
- For a view of the changelog between 2.5.0 and e1266c7 the github commits list needs to
   be reviewed. https://github.com/ppp-project/ppp/commits/master/?before=e1266c76d1ad39f98f11676e34f180f78c5a510c+35

Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
---
 config/rootfiles/common/ppp                   | 46 +++++------
 lfs/ppp                                       | 10 +--
 ...to-see-if-we-have-struct-sockaddr_ll.patch | 37 ---------
 ...266c7-2-everywhere-O_CLOEXEC-harder.patch} | 82 +++++++++----------
 4 files changed, 69 insertions(+), 106 deletions(-)
 delete mode 100644 src/patches/ppp/ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch
 rename src/patches/ppp/{ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch => ppp-e1266c7-2-everywhere-O_CLOEXEC-harder.patch} (75%)
  

Patch

diff --git a/config/rootfiles/common/ppp b/config/rootfiles/common/ppp
index 379c64af4..6a27af3e7 100644
--- a/config/rootfiles/common/ppp
+++ b/config/rootfiles/common/ppp
@@ -35,29 +35,29 @@  etc/ppp/standardloginscript
 #usr/include/pppd/upap.h
 #usr/lib/pkgconfig/pppd.pc
 usr/lib/pppd
-usr/lib/pppd/2.5.0
-#usr/lib/pppd/2.5.0/minconn.la
-usr/lib/pppd/2.5.0/minconn.so
-#usr/lib/pppd/2.5.0/openl2tp.la
-usr/lib/pppd/2.5.0/openl2tp.so
-#usr/lib/pppd/2.5.0/passprompt.la
-usr/lib/pppd/2.5.0/passprompt.so
-#usr/lib/pppd/2.5.0/passwordfd.la
-usr/lib/pppd/2.5.0/passwordfd.so
-#usr/lib/pppd/2.5.0/pppoatm.la
-usr/lib/pppd/2.5.0/pppoatm.so
-#usr/lib/pppd/2.5.0/pppoe.la
-usr/lib/pppd/2.5.0/pppoe.so
-#usr/lib/pppd/2.5.0/pppol2tp.la
-usr/lib/pppd/2.5.0/pppol2tp.so
-#usr/lib/pppd/2.5.0/radattr.la
-usr/lib/pppd/2.5.0/radattr.so
-#usr/lib/pppd/2.5.0/radius.la
-usr/lib/pppd/2.5.0/radius.so
-#usr/lib/pppd/2.5.0/radrealms.la
-usr/lib/pppd/2.5.0/radrealms.so
-#usr/lib/pppd/2.5.0/winbind.la
-usr/lib/pppd/2.5.0/winbind.so
+#usr/lib/pppd/2.5.1-dev
+#usr/lib/pppd/2.5.1-dev/minconn.la
+usr/lib/pppd/2.5.1-dev/minconn.so
+#usr/lib/pppd/2.5.1-dev/openl2tp.la
+usr/lib/pppd/2.5.1-dev/openl2tp.so
+#usr/lib/pppd/2.5.1-dev/passprompt.la
+usr/lib/pppd/2.5.1-dev/passprompt.so
+#usr/lib/pppd/2.5.1-dev/passwordfd.la
+usr/lib/pppd/2.5.1-dev/passwordfd.so
+#usr/lib/pppd/2.5.1-dev/pppoatm.la
+usr/lib/pppd/2.5.1-dev/pppoatm.so
+#usr/lib/pppd/2.5.1-dev/pppoe.la
+usr/lib/pppd/2.5.1-dev/pppoe.so
+#usr/lib/pppd/2.5.1-dev/pppol2tp.la
+usr/lib/pppd/2.5.1-dev/pppol2tp.so
+#usr/lib/pppd/2.5.1-dev/radattr.la
+usr/lib/pppd/2.5.1-dev/radattr.so
+#usr/lib/pppd/2.5.1-dev/radius.la
+usr/lib/pppd/2.5.1-dev/radius.so
+#usr/lib/pppd/2.5.1-dev/radrealms.la
+usr/lib/pppd/2.5.1-dev/radrealms.so
+#usr/lib/pppd/2.5.1-dev/winbind.la
+usr/lib/pppd/2.5.1-dev/winbind.so
 usr/sbin/chat
 usr/sbin/pppd
 usr/sbin/pppdump
diff --git a/lfs/ppp b/lfs/ppp
index 54aa1caf5..a16859002 100644
--- a/lfs/ppp
+++ b/lfs/ppp
@@ -1,7 +1,7 @@ 
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2023  IPFire Team  <info@ipfire.org>                     #
+# Copyright (C) 2007-2024  IPFire Team  <info@ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@ 
 
 include Config
 
-VER        = 2.5.0
+VER        = e1266c7
 
 THISAPP    = ppp-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -42,7 +42,7 @@  objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 6a0e9efcbff3cb499705071cc7d0e3411cf4871fd53b2bfedbb1f2cf3ad80728eb436050cf33b78e36d473be64f15907a21da17f283337455f0af379bc18272d
+$(DL_FILE)_BLAKE2 = be60fadeed632ae2511e2d60148905da9868bd4271139b4fecab6b4b93e4a403e645d84204f907a8661748fb1a18b59c893925d91565520b9af791a45b0aaf4f
 
 install : $(TARGET)
 
@@ -72,13 +72,13 @@  $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && ./autogen.sh
 	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-1-we-don-t-want-to-accidentally-leak-fds.patch
-	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch
+	cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-e1266c7-2-everywhere-O_CLOEXEC-harder.patch
 	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-3-everywhere-use-SOCK_CLOEXEC-when-creating-socket.patch
 	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-4-increase-max-padi-attempts.patch
 	cd $(DIR_APP) && patch -Np0 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-5-headers_4.9.patch
 	cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-6-patch-configure-to-handle-cflags-properly.patch
-	cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/ppp/ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch
 	cd $(DIR_APP) && ./configure \
 					--prefix=/usr \
 					--sysconfdir=/etc \
diff --git a/src/patches/ppp/ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch b/src/patches/ppp/ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch
deleted file mode 100644
index a7823d424..000000000
--- a/src/patches/ppp/ppp-2.5.0-7-add-configure-check-to-see-if-we-have-struct-sockaddr_ll.patch
+++ /dev/null
@@ -1,37 +0,0 @@ 
-From 9d6d326b2530cffb1414e4c401675117c42d43ce Mon Sep 17 00:00:00 2001
-From: Eivind Naess <eivnaes@yahoo.com>
-Date: Sun, 23 Apr 2023 11:30:43 -0700
-Subject: [PATCH] Add configure check to see if we have struct sockaddr_ll
-
-Fixes issue #411.
-
-Signed-off-by: Eivind Naess <eivnaes@yahoo.com>
----
- configure.ac                   | 3 ++-
- pppd/plugins/pppoe/config.h.in | 2 ++
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1180f64ec..38b24af92 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -75,7 +75,8 @@ AM_COND_IF([LINUX], [
-         linux/if_ether.h        \
-         linux/if_packet.h       \
-         netinet/if_ether.h      \
--        netpacket/packet.h])])
-+        netpacket/packet.h])
-+    AC_CHECK_TYPES([struct sockaddr_ll], [], [], [#include <linux/if_packet.h>])])
- 
- AC_CHECK_SIZEOF(unsigned int)
- AC_CHECK_SIZEOF(unsigned long)
-diff --git a/pppd/plugins/pppoe/config.h.in b/pppd/plugins/pppoe/config.h.in
-index d447f5e89..d7d61c01c 100644
---- a/pppd/plugins/pppoe/config.h.in
-+++ b/pppd/plugins/pppoe/config.h.in
-@@ -69,3 +69,5 @@
- /* The size of `unsigned short', as computed by sizeof. */
- #undef SIZEOF_UNSIGNED_SHORT
- 
-+/* Define to 1 if the system has the type `struct sockaddr_ll'. */
-+#undef HAVE_STRUCT_SOCKADDR_LL
diff --git a/src/patches/ppp/ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch b/src/patches/ppp/ppp-e1266c7-2-everywhere-O_CLOEXEC-harder.patch
similarity index 75%
rename from src/patches/ppp/ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch
rename to src/patches/ppp/ppp-e1266c7-2-everywhere-O_CLOEXEC-harder.patch
index c205c0e08..b6fd842a7 100644
--- a/src/patches/ppp/ppp-2.5.0-2-everywhere-O_CLOEXEC-harder.patch
+++ b/src/patches/ppp/ppp-e1266c7-2-everywhere-O_CLOEXEC-harder.patch
@@ -1,6 +1,6 @@ 
-diff -Naur pppd.orig/eap.c pppd/eap.c
---- pppd.orig/eap.c	2023-03-25 05:38:30.000000000 +0100
-+++ pppd/eap.c	2023-06-30 12:58:07.984676045 +0200
+diff -Naur ppp-e1266c7-orig/pppd/eap.c ppp-e1266c7/pppd/eap.c
+--- ppp-e1266c7-orig/pppd/eap.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/eap.c	2024-03-15 10:40:53.637190252 +0100
 @@ -1542,7 +1542,7 @@
  
  	if ((path = name_of_pn_file()) == NULL)
@@ -10,10 +10,10 @@  diff -Naur pppd.orig/eap.c pppd/eap.c
  	err = errno;
  	free(path);
  	errno = err;
-diff -Naur pppd.orig/main.c pppd/main.c
---- pppd.orig/main.c	2023-03-25 05:38:30.000000000 +0100
-+++ pppd/main.c	2023-06-30 13:00:15.155195676 +0200
-@@ -479,7 +479,7 @@
+diff -Naur ppp-e1266c7-orig/pppd/main.c ppp-e1266c7/pppd/main.c
+--- ppp-e1266c7-orig/pppd/main.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/main.c	2024-03-15 10:41:43.842037617 +0100
+@@ -480,7 +480,7 @@
  	die(0);
  
      /* Make sure fds 0, 1, 2 are open to somewhere. */
@@ -22,10 +22,10 @@  diff -Naur pppd.orig/main.c pppd/main.c
      if (fd_devnull < 0)
  	fatal("Couldn't open %s: %m", PPP_DEVNULL);
      while (fd_devnull <= 2) {
-diff -Naur pppd.orig/options.c pppd/options.c
---- pppd.orig/options.c	2023-06-30 12:42:19.262593140 +0200
-+++ pppd/options.c	2023-06-30 13:01:58.388323345 +0200
-@@ -1718,9 +1718,9 @@
+diff -Naur ppp-e1266c7-orig/pppd/options.c ppp-e1266c7/pppd/options.c
+--- ppp-e1266c7-orig/pppd/options.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/options.c	2024-03-15 10:43:02.867753370 +0100
+@@ -1719,9 +1719,9 @@
  	ppp_option_error("unable to drop permissions to open %s: %m", *argv);
  	return 0;
      }
@@ -37,10 +37,10 @@  diff -Naur pppd.orig/options.c pppd/options.c
      err = errno;
      if (!privileged_option && seteuid(euid) == -1)
  	fatal("unable to regain privileges: %m");
-diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
---- pppd.orig/sys-linux.c	2023-06-30 12:43:20.634453475 +0200
-+++ pppd/sys-linux.c	2023-06-30 13:11:25.715511251 +0200
-@@ -666,7 +666,7 @@
+diff -Naur ppp-e1266c7-orig/pppd/sys-linux.c ppp-e1266c7/pppd/sys-linux.c
+--- ppp-e1266c7-orig/pppd/sys-linux.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/sys-linux.c	2024-03-15 10:49:59.310297165 +0100
+@@ -656,7 +656,7 @@
  	    goto err;
  	}
  	dbglog("using channel %d", chindex);
@@ -49,7 +49,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  	if (fd < 0) {
  	    error("Couldn't reopen /dev/ppp: %m");
  	    goto err;
-@@ -904,7 +904,7 @@
+@@ -894,7 +894,7 @@
  		dbglog("in make_ppp_unit, already had /dev/ppp open?");
  		close(ppp_dev_fd);
  	}
@@ -58,7 +58,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  	if (ppp_dev_fd < 0)
  		fatal("Couldn't open /dev/ppp: %m");
  	flags = fcntl(ppp_dev_fd, F_GETFL);
-@@ -1025,7 +1025,7 @@
+@@ -1015,7 +1015,7 @@
  	if (!new_style_driver)
  		return -1;
  
@@ -67,7 +67,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  	if (master_fd < 0)
  		fatal("Couldn't open /dev/ppp: %m");
  	if (ioctl(master_fd, PPPIOCATTACH, &ifnum) < 0) {
-@@ -2533,7 +2533,7 @@
+@@ -2541,7 +2541,7 @@
  	if (tune_kernel) {
  	    forw_path = path_to_procfs("/sys/net/ipv4/ip_forward");
  	    if (forw_path != 0) {
@@ -76,7 +76,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  		if (fd >= 0) {
  		    if (write(fd, "1", 1) != 1)
  			error("Couldn't enable IP forwarding: %m");
-@@ -2878,7 +2878,7 @@
+@@ -2886,7 +2886,7 @@
      sscanf(utsname.release, "%d.%d.%d", &osmaj, &osmin, &ospatch);
      kernel_version = KVERSION(osmaj, osmin, ospatch);
  
@@ -85,7 +85,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
      if (fd >= 0) {
  	new_style_driver = 1;
  
-@@ -3056,7 +3056,7 @@
+@@ -3064,7 +3064,7 @@
  #if __GLIBC__ >= 2
      updwtmp(_PATH_WTMP, &ut);
  #else
@@ -94,7 +94,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
      if (wtmp >= 0) {
  	flock(wtmp, LOCK_EX);
  
-@@ -3280,7 +3280,7 @@
+@@ -3288,7 +3288,7 @@
  	int fd;
  
  	path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
@@ -103,7 +103,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  	    if (write(fd, "1", 1) != 1)
  		error("Couldn't enable dynamic IP addressing: %m");
  	    close(fd);
-@@ -3534,7 +3534,7 @@
+@@ -3542,7 +3542,7 @@
      /*
       * Try the unix98 way first.
       */
@@ -112,7 +112,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
      if (mfd >= 0) {
  	int ptn;
  	if (ioctl(mfd, TIOCGPTN, &ptn) >= 0) {
-@@ -3545,7 +3545,8 @@
+@@ -3553,7 +3553,8 @@
  	    if (ioctl(mfd, TIOCSPTLCK, &ptn) < 0)
  		warn("Couldn't unlock pty slave %s: %m", pty_name);
  #endif
@@ -122,7 +122,7 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  	    {
  		warn("Couldn't open pty slave %s: %m", pty_name);
  		close(mfd);
-@@ -3559,10 +3560,10 @@
+@@ -3567,10 +3568,10 @@
  	for (i = 0; i < 64; ++i) {
  	    slprintf(pty_name, sizeof(pty_name), "/dev/pty%c%x",
  		     'p' + i / 16, i % 16);
@@ -135,19 +135,19 @@  diff -Naur pppd.orig/sys-linux.c pppd/sys-linux.c
  		if (sfd >= 0) {
  		    ret = fchown(sfd, uid, -1);
  		    if (ret != 0) {
-diff -Naur pppd.orig/tdb.c pppd/tdb.c
---- pppd.orig/tdb.c	2021-07-23 06:41:07.000000000 +0200
-+++ pppd/tdb.c	2023-06-30 13:12:55.034900600 +0200
-@@ -1728,7 +1728,7 @@
- 		goto internal;
+diff -Naur ppp-e1266c7-orig/pppd/tdb.c ppp-e1266c7/pppd/tdb.c
+--- ppp-e1266c7-orig/pppd/tdb.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/tdb.c	2024-03-15 10:51:25.182882191 +0100
+@@ -1732,7 +1732,7 @@
  	}
  
+ again:
 -	if ((tdb->fd = open(name, open_flags, mode)) == -1) {
 +	if ((tdb->fd = open(name, open_flags | O_CLOEXEC, mode)) == -1) {
- 		TDB_LOG((tdb, 5, "tdb_open_ex: could not open file %s: %s\n",
- 			 name, strerror(errno)));
- 		goto fail;	/* errno set by open(2) */
-@@ -1971,7 +1971,7 @@
+ 		if ((open_flags & O_CREAT) && errno == ENOENT &&
+ 			mkdir_recursive(PPP_PATH_VARRUN) == 0)
+ 			goto again;
+@@ -1979,7 +1979,7 @@
  	}
  	if (close(tdb->fd) != 0)
  		TDB_LOG((tdb, 0, "tdb_reopen: WARNING closing tdb->fd failed!\n"));
@@ -156,9 +156,9 @@  diff -Naur pppd.orig/tdb.c pppd/tdb.c
  	if (tdb->fd == -1) {
  		TDB_LOG((tdb, 0, "tdb_reopen: open failed (%s)\n", strerror(errno)));
  		goto fail;
-diff -Naur pppd.orig/tty.c pppd/tty.c
---- pppd.orig/tty.c	2023-03-25 05:38:30.000000000 +0100
-+++ pppd/tty.c	2023-06-30 13:14:06.450418113 +0200
+diff -Naur ppp-e1266c7-orig/pppd/tty.c ppp-e1266c7/pppd/tty.c
+--- ppp-e1266c7-orig/pppd/tty.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/tty.c	2024-03-15 10:52:35.828341901 +0100
 @@ -621,7 +621,7 @@
  				ppp_set_status(EXIT_OPEN_FAILED);
  				goto errret;
@@ -177,10 +177,10 @@  diff -Naur pppd.orig/tty.c pppd/tty.c
  				break;
  			if (errno != EINTR) {
  				error("Failed to reopen %s: %m", devnam);
-diff -Naur pppd.orig/utils.c pppd/utils.c
---- pppd.orig/utils.c	2022-12-30 02:12:39.000000000 +0100
-+++ pppd/utils.c	2023-06-30 13:15:47.860182369 +0200
-@@ -843,14 +843,14 @@
+diff -Naur ppp-e1266c7-orig/pppd/utils.c ppp-e1266c7/pppd/utils.c
+--- ppp-e1266c7-orig/pppd/utils.c	2024-02-13 10:40:56.000000000 +0100
++++ ppp-e1266c7/pppd/utils.c	2024-03-15 10:55:27.176832115 +0100
+@@ -926,14 +926,14 @@
      slprintf(lock_file, sizeof(lock_file), "%s/LCK..%s", PPP_PATH_LOCKDIR, dev);
  #endif
  
@@ -197,7 +197,7 @@  diff -Naur pppd.orig/utils.c pppd/utils.c
  	if (fd < 0) {
  	    if (errno == ENOENT) /* This is just a timing problem. */
  		continue;
-@@ -933,7 +933,7 @@
+@@ -1016,7 +1016,7 @@
  
      if (lock_file[0] == 0)
  	return -1;