diff options
Diffstat (limited to 'obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds')
-rw-r--r-- | obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds b/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds new file mode 100644 index 0000000000..39208ab4db --- /dev/null +++ b/obsolete-buildroot/sources/openwrt/patches/ppp/fix_closed_fds @@ -0,0 +1,34 @@ +sys_init() will open a socket and keep it open for the whole like of the +process. If pppd is started without all standard fds open then the socket +will get one of their numbers, which will be clobbered later by the +/dev/null fd duplicated by main(). + +See Debian bug #235192. + +diff -ruN ppp.orig/pppd/main.c ppp/pppd/main.c +--- ppp.orig/pppd/main.c 2004-02-29 18:50:12.000000000 +0100 ++++ ppp/pppd/main.c 2004-02-29 18:48:56.000000000 +0100 +@@ -385,11 +385,6 @@ + if (dryrun) + die(0); + +- /* +- * Initialize system-dependent stuff. +- */ +- sys_init(); +- + /* Make sure fds 0, 1, 2 are open to somewhere. */ + fd_devnull = open(_PATH_DEVNULL, O_RDWR); + if (fd_devnull < 0) +@@ -401,6 +396,11 @@ + fd_devnull = i; + } + ++ /* ++ * Initialize system-dependent stuff. ++ */ ++ sys_init(); ++ + #ifdef USE_TDB + pppdb = tdb_open(_PATH_PPPDB, 0, 0, O_RDWR|O_CREAT, 0644); + if (pppdb != NULL) { |