Backport mkdirat mode test
Resolves: RHEL-56743
This commit is contained in:
parent
0f8a066654
commit
de2aa73d68
79
glibc-RHEL-56743.patch
Normal file
79
glibc-RHEL-56743.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
commit 55cd51d971b84fbb2cc0fe8140cc8581f98582c7
|
||||||
|
Author: Joseph Myers <josmyers@redhat.com>
|
||||||
|
Date: Thu Aug 22 11:25:14 2024 +0000
|
||||||
|
|
||||||
|
Test mkdirat use of mode argument
|
||||||
|
|
||||||
|
The test io/tst-mkdirat doesn't verify the permissions on the created
|
||||||
|
directory (thus, doesn't verify at all anything about how mkdirat uses
|
||||||
|
the mode argument). Add checks of this to the existing test.
|
||||||
|
|
||||||
|
Tested for x86_64.
|
||||||
|
|
||||||
|
diff --git a/io/tst-mkdirat.c b/io/tst-mkdirat.c
|
||||||
|
index 605e51ef1e966b42..b97bc3ca6d0cdf23 100644
|
||||||
|
--- a/io/tst-mkdirat.c
|
||||||
|
+++ b/io/tst-mkdirat.c
|
||||||
|
@@ -53,6 +53,10 @@ prepare (void)
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
+ /* Find the current umask. */
|
||||||
|
+ mode_t mask = umask (022);
|
||||||
|
+ umask (mask);
|
||||||
|
+
|
||||||
|
/* fdopendir takes over the descriptor, make a copy. */
|
||||||
|
int dupfd = dup (dir_fd);
|
||||||
|
if (dupfd == -1)
|
||||||
|
@@ -107,6 +111,13 @@ do_test (void)
|
||||||
|
puts ("mkdirat did not create a directory");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
+ if ((st1.st_mode & 01777) != (~mask & 0777))
|
||||||
|
+ {
|
||||||
|
+ printf ("mkdirat created directory with wrong mode %o, expected %o\n",
|
||||||
|
+ (unsigned int) (st1.st_mode & 01777),
|
||||||
|
+ (unsigned int) (~mask & 0777));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
dupfd = dup (dir_fd);
|
||||||
|
if (dupfd == -1)
|
||||||
|
@@ -156,6 +167,37 @@ do_test (void)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Test again with a different mode. */
|
||||||
|
+ umask (0);
|
||||||
|
+ e = mkdirat (dir_fd, "some-dir", 01755);
|
||||||
|
+ umask (mask);
|
||||||
|
+ if (e == -1)
|
||||||
|
+ {
|
||||||
|
+ puts ("directory creation (different mode) failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ if (fstatat64 (dir_fd, "some-dir", &st1, 0) != 0)
|
||||||
|
+ {
|
||||||
|
+ puts ("fstat64 (different mode) failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ if (!S_ISDIR (st1.st_mode))
|
||||||
|
+ {
|
||||||
|
+ puts ("mkdirat (different mode) did not create a directory");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ if ((st1.st_mode & 01777) != 01755)
|
||||||
|
+ {
|
||||||
|
+ printf ("mkdirat (different mode) created directory with wrong mode %o\n",
|
||||||
|
+ (unsigned int) (st1.st_mode & 01777));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ if (unlinkat (dir_fd, "some-dir", AT_REMOVEDIR) != 0)
|
||||||
|
+ {
|
||||||
|
+ puts ("unlinkat (different mode) failed");
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
close (dir_fd);
|
||||||
|
|
||||||
|
return 0;
|
@ -1036,6 +1036,7 @@ Patch728: glibc-RHEL-65356-2.patch
|
|||||||
Patch729: glibc-RHEL-38225-1.patch
|
Patch729: glibc-RHEL-38225-1.patch
|
||||||
Patch730: glibc-RHEL-38225-2.patch
|
Patch730: glibc-RHEL-38225-2.patch
|
||||||
Patch731: glibc-RHEL-54250.patch
|
Patch731: glibc-RHEL-54250.patch
|
||||||
|
Patch732: glibc-RHEL-56743.patch
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Continued list of core "glibc" package information:
|
# Continued list of core "glibc" package information:
|
||||||
@ -3034,6 +3035,7 @@ update_gconv_modules_cache ()
|
|||||||
references. (RHEL-65356)
|
references. (RHEL-65356)
|
||||||
- Backport verbosity patches for glibc math (RHEL-38225)
|
- Backport verbosity patches for glibc math (RHEL-38225)
|
||||||
- Backport getdelim test coverage improvements (RHEL-54250)
|
- Backport getdelim test coverage improvements (RHEL-54250)
|
||||||
|
- Backport mkdirat mode test (RHEL-56743)
|
||||||
|
|
||||||
* Thu Dec 19 2024 DJ Delorie <dj@redhat.com> - 2.34-148
|
* Thu Dec 19 2024 DJ Delorie <dj@redhat.com> - 2.34-148
|
||||||
- Increase ungetc test coverage, guarantee single char pushback (RHEL-46738)
|
- Increase ungetc test coverage, guarantee single char pushback (RHEL-46738)
|
||||||
|
Loading…
Reference in New Issue
Block a user