]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
support: Close original descriptors in support_capture_subprocess
authorFlorian Weimer <fweimer@redhat.com>
Sat, 1 Dec 2018 20:43:36 +0000 (21:43 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Wed, 12 Dec 2018 11:03:36 +0000 (12:03 +0100)
(cherry picked from commit 02cd5c1a8d033d7f91fea12a66bb44d1bbf85f76)

ChangeLog
support/support_capture_subprocess.c

index a979f53811bb36374a948f105dc8e8a5bc8a0e5c..2951523334fb26e744d5f3072c2d3753048dad15 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-12-01  Florian Weimer  <fweimer@redhat.com>
+
+       * support/support_capture_subprocess.c
+       (support_capture_subprocess): Check that pipe descriptors have
+       expected values.  Close original pipe descriptors in subprocess.
+
 2018-11-28  Florian Weimer  <fweimer@redhat.com>
 
        * support/support.h (support_quote_string): Do not use str
index 6d2029e13bd6ae73dd3ef55592e7246446a7a102..93f6ea310290000a2cccb786078a34b3f5a8b672 100644 (file)
@@ -59,8 +59,12 @@ support_capture_subprocess (void (*callback) (void *), void *closure)
 
   int stdout_pipe[2];
   xpipe (stdout_pipe);
+  TEST_VERIFY (stdout_pipe[0] > STDERR_FILENO);
+  TEST_VERIFY (stdout_pipe[1] > STDERR_FILENO);
   int stderr_pipe[2];
   xpipe (stderr_pipe);
+  TEST_VERIFY (stderr_pipe[0] > STDERR_FILENO);
+  TEST_VERIFY (stderr_pipe[1] > STDERR_FILENO);
 
   TEST_VERIFY (fflush (stdout) == 0);
   TEST_VERIFY (fflush (stderr) == 0);
@@ -72,6 +76,8 @@ support_capture_subprocess (void (*callback) (void *), void *closure)
       xclose (stderr_pipe[0]);
       xdup2 (stdout_pipe[1], STDOUT_FILENO);
       xdup2 (stderr_pipe[1], STDERR_FILENO);
+      xclose (stdout_pipe[1]);
+      xclose (stderr_pipe[1]);
       callback (closure);
       _exit (0);
     }