about summary refs log tree commit diff
path: root/sysdeps/unix/grantpt.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-11-24 18:24:14 -0800
committerUlrich Drepper <drepper@redhat.com>2009-11-24 18:24:14 -0800
commit139ee080b6b428240bf49f3e6361f3ac729f891a (patch)
tree6d995b56cab939c5107371e83cd5fa53fe3c3284 /sysdeps/unix/grantpt.c
parentfa214705b957d20621cb1190b467aa88bc9b69a3 (diff)
downloadglibc-139ee080b6b428240bf49f3e6361f3ac729f891a.tar.gz
glibc-139ee080b6b428240bf49f3e6361f3ac729f891a.tar.xz
glibc-139ee080b6b428240bf49f3e6361f3ac729f891a.zip
Prevent unintended file desriptor leak in grantpt.
The pt_chown program is completely transparently called.  It might
not be able to live with the various file descriptors the program
has open at the time of the call (e.g., under SELinux).  Close all
but the needed descriptor and connect stdin, stdout, and stderr
with /dev/null.  pt_chown shouldn't print anything when called to
do real work.
Diffstat (limited to 'sysdeps/unix/grantpt.c')
-rw-r--r--sysdeps/unix/grantpt.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c
index e140fb2850..2a7a963162 100644
--- a/sysdeps/unix/grantpt.c
+++ b/sysdeps/unix/grantpt.c
@@ -194,6 +194,10 @@ grantpt (int fd)
 	if (__dup2 (fd, PTY_FILENO) < 0)
 	  _exit (FAIL_EBADF);
 
+#ifdef CLOSE_ALL_FDS
+      CLOSE_ALL_FDS ();
+#endif
+
       execle (_PATH_PT_CHOWN, basename (_PATH_PT_CHOWN), NULL, NULL);
       _exit (FAIL_EXEC);
     }