[PATCH v2 3/4] tst-freopen4-main.c: Call support_capture_subprocess with chroot

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Mon Aug 4 18:40:52 GMT 2025



On 19/07/25 11:43, H.J. Lu wrote:
> 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>


LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  stdio-common/tst-freopen4-main.c | 44 ++++++++++++++++++++++----------
>  1 file changed, 30 insertions(+), 14 deletions(-)
> 
> diff --git a/stdio-common/tst-freopen4-main.c b/stdio-common/tst-freopen4-main.c
> index 3336f5327d..436da4d203 100644
> --- a/stdio-common/tst-freopen4-main.c
> +++ b/stdio-common/tst-freopen4-main.c
> @@ -28,25 +28,15 @@
>  #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;
>  }
>  



More information about the Libc-alpha mailing list