(internal_setent): Set FD_CLOEXEC for stream on input file.
authordrepper <drepper>
Mon, 28 Jul 1997 22:01:52 +0000 (22:01 +0000)
committerdrepper <drepper>
Mon, 28 Jul 1997 22:01:52 +0000 (22:01 +0000)
nss/nss_db/db-alias.c

index 8b8cb41..810fc3a 100644 (file)
@@ -1,5 +1,5 @@
 /* Mail alias file parser in nss_db module.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -51,6 +51,26 @@ internal_setent (int stayopen)
 
       if (db == NULL)
        status = NSS_STATUS_UNAVAIL;
+      else
+       {
+         /* We have to make sure the file is  `closed on exec'.  */
+         int result, flags;
+
+         result = flags = fcntl ((*db->fd) (db), F_GETFD, 0);
+         if (result >= 0)
+           {
+             flags |= FD_CLOEXEC;
+             result = fcntl ((*db->fd) (db), F_SETFD, flags);
+           }
+         if (result < 0)
+           {
+             /* Something went wrong.  Close the stream and return a
+                failure.  */
+             (*db->close) (db);
+             db = NULL;
+             status = NSS_STATUS_UNAVAIL;
+           }
+       }
     }
 
   /* Remember STAYOPEN flag.  */