[PATCH] io: Fix destructive nature of tst-fchmod-errors

Florian Weimer fweimer@redhat.com
Fri Aug 30 20:07:12 GMT 2024


We must not change the permissions of /dev/null if running
as root.

---
 io/tst-fchmod-errors.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/io/tst-fchmod-errors.c b/io/tst-fchmod-errors.c
index ee15300fc3..bf2a4c568e 100644
--- a/io/tst-fchmod-errors.c
+++ b/io/tst-fchmod-errors.c
@@ -18,8 +18,10 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <stdio.h>
 #include <support/check.h>
 #include <support/xunistd.h>
+#include <unistd.h>
 
 static int
 do_test (void)
@@ -27,9 +29,14 @@ do_test (void)
   {
     /* Permissions on /dev/null (the opened descriptor) cannot be changed.  */
     int fd = xopen ("/dev/null", O_RDWR, 0);
-    errno = 0;
-    TEST_COMPARE (fchmod (fd, 0), -1);
-    TEST_COMPARE (errno, EPERM);
+    if (getuid () == 0)
+      puts ("info: /dev/null fchmod test skipped because of root privileges");
+    else
+      {
+        errno = 0;
+        TEST_COMPARE (fchmod (fd, 0), -1);
+        TEST_COMPARE (errno, EPERM);
+      }
     xclose (fd);
 
     /* Now testing an invalid file descriptor.   */

base-commit: 424d97be50488beb6196c0ff0bc3dfeb87b4281c



More information about the Libc-alpha mailing list