From: Todd C. Miller Date: Mon, 17 Jan 2000 22:46:32 +0000 (+0000) Subject: When using rlimit check for RLIM_INFINITY X-Git-Tag: SUDO_1_6_2~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=217cae528a6a6cdd2e0dfaca5e50a27b80d5564f;p=sudo When using rlimit check for RLIM_INFINITY When computing the value of maxfd, use min(getdtablesize(), RLIMIT_NOFILE) --- diff --git a/sudo.c b/sudo.c index b935d2f67..e16148fd5 100644 --- a/sudo.c +++ b/sudo.c @@ -1009,16 +1009,17 @@ initial_setup() /* * Close any open fd's other than stdin, stdout and stderr. */ -#ifdef RLIMIT_NOFILE - if (getrlimit(RLIMIT_NOFILE, &rl) == 0) - maxfd = rl.rlim_max - 1; - else -#endif /* RLIMIT_NOFILE */ #ifdef HAVE_SYSCONF - maxfd = sysconf(_SC_OPEN_MAX) - 1; + maxfd = sysconf(_SC_OPEN_MAX) - 1; #else - maxfd = getdtablesize() - 1; + maxfd = getdtablesize() - 1; #endif /* HAVE_SYSCONF */ +#ifdef RLIMIT_NOFILE + if (getrlimit(RLIMIT_NOFILE, &rl) == 0) { + if (rl.rlim_max != RLIM_INFINITY && rl.rlim_max <= maxfd) + maxfd = rl.rlim_max - 1; + } +#endif /* RLIMIT_NOFILE */ for (fd = maxfd; fd > STDERR_FILENO; fd--) (void) close(fd);