summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2010-11-26 11:39:58 +0000
committerArthur de Jong <arthur@arthurdejong.org>2010-11-26 11:39:58 +0000
commit87c64b545f9fe5bd15a9f254fb787634d9ea5f4f (patch)
tree7172c8c6dce3b2c9ed5ac9533959ef5d8f97e124
parentfea0ff28c0ab0a68fae5dafd780829cbf1965d89 (diff)
close all open file descriptors on start
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd@1316 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r--nslcd/nslcd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/nslcd/nslcd.c b/nslcd/nslcd.c
index 83d4e95..8b36732 100644
--- a/nslcd/nslcd.c
+++ b/nslcd/nslcd.c
@@ -653,6 +653,14 @@ int main(int argc,char *argv[])
log_log(LOG_ERR,"daemon may already be active, cannot acquire lock (%s): %s",NSLCD_PIDFILE,strerror(errno));
exit(EXIT_FAILURE);
}
+ /* close all file descriptors (except stdin/out/err) */
+ i=sysconf(_SC_OPEN_MAX);
+ /* if the system does not have OPEN_MAX just close the first 32 and
+ hope we closed enough */
+ if (i<0)
+ i=32;
+ for (;i>3;i--)
+ close(i);
/* daemonize */
if ((!nslcd_debugging)&&(daemon(0,0)<0))
{