]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
io/tst-stat.c: Use a temporary directory for symlink test
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 19 Jul 2025 00:03:04 +0000 (17:03 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 19 Jul 2025 19:43:26 +0000 (12:43 -0700)
Call support_create_temp_directory to create a temporary directory for
symlink test, instead of a fixed file in the glibc source tree, to avoid
the race condition when there are more than one glibc tests running at the
same time with the same glibc source tree.  This fixes BZ #33178.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Andreas K. Huettel <dilfridge@gentoo.org>
io/tst-stat.c

index aeea435ca106df054de8d6f312ac8f085020bbcb..5e0bfcc30e2d8d7ade334c487cd89173f90ffc64 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/sysmacros.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <stdlib.h>
 
 static void
 stat_check (int fd, const char *path, struct stat *st)
@@ -78,7 +79,8 @@ static int
 do_test (void)
 {
   char *path;
-  const char *linkame = "tst-fstat.linkname";
+  char *tempdir = support_create_temp_directory ("tst-stat-");
+  char *linkname = xasprintf ("%s/tst-fstat.linkname", tempdir);
   int fd = create_temp_file ("tst-fstat.", &path);
   TEST_VERIFY_EXIT (fd >= 0);
   support_write_file_string (path, "abc");
@@ -122,9 +124,12 @@ do_test (void)
        }
     }
 
-  TEST_COMPARE (symlink ("tst-fstat.target", linkame), 0);
-  add_temp_file (linkame);
-  fstatat_link (linkame, &st);
+  TEST_COMPARE (symlink ("tst-fstat.target", linkname), 0);
+  add_temp_file (linkname);
+  fstatat_link (linkname, &st);
+
+  free (linkname);
+  free (tempdir);
 
   return 0;
 }