summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchip <chip>2001-10-11 20:11:44 +0000
committerchip <chip>2001-10-11 20:11:44 +0000
commit9743207017ccface520f839fb573ddef22e464ed (patch)
treecb8ab39dbb1491028b2e09396988900b13dff24b
parent47e5725d85dc2fed09c584d5de16afbe1b434887 (diff)
downloadnfs-utils-9743207017ccface520f839fb573ddef22e464ed.tar.gz
nfs-utils-9743207017ccface520f839fb573ddef22e464ed.tar.xz
nfs-utils-9743207017ccface520f839fb573ddef22e464ed.zip
2001-10-11 Chip Salzenberg <chip@pobox.com>
* utils/mountd/mountd.c (main): Close fds > 2 _before_ RPC init. * debian/changelog: Version 0.3.3-2.
-rw-r--r--ChangeLog5
-rw-r--r--debian/changelog7
-rw-r--r--utils/mountd/mountd.c17
3 files changed, 21 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 55e2a30..36a1663 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-10-11 Chip Salzenberg <chip@pobox.com>
+
+ * utils/mountd/mountd.c (main): Close fds > 2 _before_ RPC init.
+ * debian/changelog: Version 0.3.3-2.
+
2001-10-08 Chip Salzenberg <chip@pobox.com>
* utils/mountd/mountd.c (main): When daemonizing, close all fds > 2.
diff --git a/debian/changelog b/debian/changelog
index a5f88e3..954aff7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+nfs-utils (1:0.3.3-2) unstable; urgency=high
+
+ * The "Test It Before Release, Stupid" release.
+ * Repair total failure of rpc.mountd. (closes: #115095)
+
+ -- Chip Salzenberg <chip@valinux.com> Thu, 11 Oct 2001 13:03:45 -0700
+
nfs-utils (1:0.3.3-1) unstable; urgency=medium
* The "Life Goes On" release.
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index e93f0ba..73f9f66 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -484,6 +484,13 @@ main(int argc, char **argv)
/* WARNING: the following works on Linux and SysV, but not BSD! */
sigaction(SIGCHLD, &sa, NULL);
+ /* Daemons should close all extra filehandles ... *before* RPC init. */
+ if (!foreground) {
+ int fd = sysconf (_SC_OPEN_MAX);
+ while (--fd > 2)
+ (void) close(fd);
+ }
+
if (nfs_version & 0x1)
rpc_init("mountd", MOUNTPROG, MOUNTVERS,
mount_dispatch, port);
@@ -512,17 +519,11 @@ main(int argc, char **argv)
/* Now we remove ourselves from the foreground.
Redirect stdin/stdout/stderr first. */
{
- int fd, fdmax;
-
- fd = open("/dev/null", O_RDWR);
+ int fd = open("/dev/null", O_RDWR);
(void) dup2(fd, 0);
(void) dup2(fd, 1);
(void) dup2(fd, 2);
-
- fdmax = sysconf (_SC_OPEN_MAX);
- for (fd = 3; fd < fdmax; fd++) {
- close (fd);
- }
+ if (fd > 2) (void) close(fd);
}
setsid();
xlog_background();