diff options
author | Shane Kerr <shane@isc.org> | 2006-03-27 09:45:47 +0000 |
---|---|---|
committer | Shane Kerr <shane@isc.org> | 2006-03-27 09:45:47 +0000 |
commit | 185d16f9f9ba753cfcf7903030c6895f1b9b2879 (patch) | |
tree | 31208801bec995825be8f84ed3c826503fe03d05 /relay | |
parent | ba65ea235f2d7b5533a8d8f63540a253525c349b (diff) | |
download | isc-dhcp-185d16f9f9ba753cfcf7903030c6895f1b9b2879.tar.gz |
Changes as documented in ticket #15937 (stdio file descriptor fixes).
Diffstat (limited to 'relay')
-rw-r--r-- | relay/dhcrelay.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c index 4abc5250..15c0b13e 100644 --- a/relay/dhcrelay.c +++ b/relay/dhcrelay.c @@ -34,7 +34,7 @@ #ifndef lint static char ocopyright[] = -"$Id: dhcrelay.c,v 1.55 2006/02/27 23:56:13 dhankins Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n"; +"$Id: dhcrelay.c,v 1.56 2006/03/27 09:45:47 shane Exp $ Copyright (c) 2004-2006 Internet Systems Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -101,6 +101,7 @@ int main (argc, argv, envp) int argc; char **argv, **envp; { + int fd; int i; struct servent *ent; struct server_list *sp = (struct server_list *)0; @@ -110,15 +111,18 @@ int main (argc, argv, envp) char *s; struct interface_info *tmp = (struct interface_info *)0; - /* Make sure we have stdin, stdout and stderr. */ - i = open ("/dev/null", O_RDWR); - if (i == 0) - i = open ("/dev/null", O_RDWR); - if (i == 1) { - i = open ("/dev/null", O_RDWR); - log_perror = 0; /* No sense logging to /dev/null. */ - } else if (i != -1) - close (i); + /* Make sure that file descriptors 0 (stdin), 1, (stdout), and + 2 (stderr) are open. To do this, we assume that when we + open a file the lowest available file decriptor is used. */ + fd = open ("/dev/null", O_RDWR); + if (fd == 0) + fd = open ("/dev/null", O_RDWR); + if (fd == 1) + fd = open ("/dev/null", O_RDWR); + if (fd == 2) + log_perror = 0; /* No sense logging to /dev/null. */ + else if (fd != -1) + close (fd); #ifdef SYSLOG_4_2 openlog ("dhcrelay", LOG_NDELAY); |