]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
tst-freopen4-main.c: Call support_capture_subprocess with chroot
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 19 Jul 2025 14:43:28 +0000 (07:43 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 4 Aug 2025 21:41:29 +0000 (14:41 -0700)
Update tst-freopen4-main.c to call support_capture_subprocess with chroot,
which makes temporary files inaccessible, so that temporary files can be
deleted.

This partially fixes BZ #33182.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
stdio-common/tst-freopen4-main.c

index 3336f5327d6b8203842f5eb3f5b1587fe7055af4..436da4d20311c004b7964c37e9fe639acda87df9 100644 (file)
 #include <support/test-driver.h>
 #include <support/xstdio.h>
 #include <support/xunistd.h>
+#include <support/capture_subprocess.h>
 
-int
-do_test (void)
+static void
+do_test_chroot (void *data)
 {
-  mtrace ();
-  char *temp_dir;
+  char *temp_dir = (char *) data;
   FILE *fp;
   int ret;
 
-  /* These chroot tests verify that either reopening a renamed or
-     deleted file works even in the absence of /proc, or that it fails
-     (without memory leaks); thus, for example, such reopening does
-     not crash in the absence of /proc.  */
-
-  support_become_root ();
-  if (!support_can_chroot ())
-    return EXIT_UNSUPPORTED;
-
-  temp_dir = support_create_temp_directory ("tst-freopen4");
   xchroot (temp_dir);
 
   /* Test freopen with NULL, renamed file.  This verifies that
@@ -96,6 +86,32 @@ do_test (void)
     puts ("freopen of deleted file failed (OK)");
 
   free (temp_dir);
+}
+
+int
+do_test (void)
+{
+  mtrace ();
+  char *temp_dir;
+
+  /* These chroot tests verify that either reopening a renamed or
+     deleted file works even in the absence of /proc, or that it fails
+     (without memory leaks); thus, for example, such reopening does
+     not crash in the absence of /proc.  */
+
+  support_become_root ();
+  if (!support_can_chroot ())
+    return EXIT_UNSUPPORTED;
+
+  temp_dir = support_create_temp_directory ("tst-freopen4");
+
+  struct support_capture_subprocess result;
+  result = support_capture_subprocess (do_test_chroot, temp_dir);
+  support_capture_subprocess_check (&result, "freopen4", 0,
+                                   sc_allow_stdout);
+  fputs (result.out.buffer, stdout);
+  support_capture_subprocess_free (&result);
+
   return 0;
 }