Fix race condition in io/tst-stat symlink test (RHEL-142209)

Resolves: RHEL-142209
This commit is contained in:
Frédéric Bérat 2026-02-24 15:23:26 +01:00
parent a5df4f06f7
commit 8a9ddda334

52
glibc-RHEL-142209.patch Normal file
View File

@ -0,0 +1,52 @@
commit 55e85c1e48c2aae71c0b5907fd22a3e9b978b6e8
Author: H.J. Lu <hjl.tools@gmail.com>
Date: Fri Jul 18 17:03:04 2025 -0700
io/tst-stat.c: Use a temporary directory for symlink test
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>
diff --git a/io/tst-stat.c b/io/tst-stat.c
index 269c62d29e7e93fa..af31b4b39d3d65a8 100644
--- a/io/tst-stat.c
+++ b/io/tst-stat.c
@@ -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;
}