From cd8692c099106d7acad6fd0215a899dae866792a Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Tue, 19 Dec 2006 07:48:19 +0000 Subject: [PATCH] Fix problem with fd 0 getting closed unintentionally by closelog. Patch from Alan Curry in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=298582. Basically, openlog was getting fd 0 for the log in some circumstances, and safe_fork() was doing closelog after getting the desired stdin dup'd to fd 0. This fixes it by doing the closelog a little earlier. --- pppd/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pppd/main.c b/pppd/main.c index 9c4cb46..7924b5d 100644 --- a/pppd/main.c +++ b/pppd/main.c @@ -66,7 +66,7 @@ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#define RCSID "$Id: main.c,v 1.153 2006/06/04 03:52:50 paulus Exp $" +#define RCSID "$Id: main.c,v 1.154 2006/12/19 07:48:19 paulus Exp $" #include #include @@ -1567,6 +1567,8 @@ safe_fork(int infd, int outfd, int errfd) if (errfd == 0 || errfd == 1) errfd = dup(errfd); + closelog(); + /* dup the in, out, err fds to 0, 1, 2 */ if (infd != 0) dup2(infd, 0); @@ -1575,7 +1577,6 @@ safe_fork(int infd, int outfd, int errfd) if (errfd != 2) dup2(errfd, 2); - closelog(); if (log_to_fd > 2) close(log_to_fd); if (the_channel->close) -- 2.39.2