summaryrefslogtreecommitdiff
path: root/nptl-Use-support-check.h-facilities-in-tst-setuid3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nptl-Use-support-check.h-facilities-in-tst-setuid3.patch')
-rw-r--r--nptl-Use-support-check.h-facilities-in-tst-setuid3.patch134
1 files changed, 134 insertions, 0 deletions
diff --git a/nptl-Use-support-check.h-facilities-in-tst-setuid3.patch b/nptl-Use-support-check.h-facilities-in-tst-setuid3.patch
new file mode 100644
index 0000000..2251783
--- /dev/null
+++ b/nptl-Use-support-check.h-facilities-in-tst-setuid3.patch
@@ -0,0 +1,134 @@
+From f30501ca7557a194a53af22ff5b47b3189c48216 Mon Sep 17 00:00:00 2001
+From: "Maciej W. Rozycki" <macro@redhat.com>
+Date: Fri, 26 Jul 2024 13:21:34 +0100
+Subject: [PATCH] nptl: Use <support/check.h> facilities in tst-setuid3
+
+Remove local FAIL macro in favor to FAIL_EXIT1 from <support/check.h>,
+which provides equivalent reporting, with the name of the file and the
+line number within of the failure site additionally included. Remove
+FAIL_ERR altogether and include ": %m" explicitly with the format string
+supplied to FAIL_EXIT1 as there seems little value to have a separate
+macro just for this.
+
+Reviewed-by: DJ Delorie <dj@redhat.com>
+(cherry picked from commit 8c98195af6e6f1ce21743fc26c723e0f7e45bcf2)
+---
+ sysdeps/pthread/tst-setuid3.c | 37 +++++++++++++++--------------------
+ 1 file changed, 16 insertions(+), 21 deletions(-)
+
+diff --git a/sysdeps/pthread/tst-setuid3.c b/sysdeps/pthread/tst-setuid3.c
+index 58b78d3116..d13848a647 100644
+--- a/sysdeps/pthread/tst-setuid3.c
++++ b/sysdeps/pthread/tst-setuid3.c
+@@ -15,24 +15,19 @@
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+-#include <stdio.h>
+ #include <errno.h>
+ #include <pthread.h>
+ #include <stdbool.h>
+ #include <unistd.h>
+
++#include <support/check.h>
++
+ /* The test must run under a non-privileged user ID. */
+ static const uid_t test_uid = 1;
+
+ static pthread_barrier_t barrier1;
+ static pthread_barrier_t barrier2;
+
+-#define FAIL(fmt, ...) \
+- do { printf ("FAIL: " fmt "\n", __VA_ARGS__); _exit (1); } while (0)
+-
+-#define FAIL_ERR(fmt, ...) \
+- do { printf ("FAIL: " fmt ": %m\n", __VA_ARGS__); _exit (1); } while (0)
+-
+ /* True if x is not a successful return code from pthread_barrier_wait. */
+ static inline bool
+ is_invalid_barrier_ret (int x)
+@@ -45,10 +40,10 @@ thread_func (void *ctx __attribute__ ((unused)))
+ {
+ int ret = pthread_barrier_wait (&barrier1);
+ if (is_invalid_barrier_ret (ret))
+- FAIL ("pthread_barrier_wait (barrier1) (on thread): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_wait (barrier1) (on thread): %d", ret);
+ ret = pthread_barrier_wait (&barrier2);
+ if (is_invalid_barrier_ret (ret))
+- FAIL ("pthread_barrier_wait (barrier2) (on thread): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_wait (barrier2) (on thread): %d", ret);
+ return NULL;
+ }
+
+@@ -59,13 +54,13 @@ setuid_failure (int phase)
+ switch (ret)
+ {
+ case 0:
+- FAIL ("setuid succeeded unexpectedly in phase %d", phase);
++ FAIL_EXIT1 ("setuid succeeded unexpectedly in phase %d", phase);
+ case -1:
+ if (errno != EPERM)
+- FAIL_ERR ("setuid phase %d", phase);
++ FAIL_EXIT1 ("setuid phase %d: %m", phase);
+ break;
+ default:
+- FAIL ("invalid setuid return value in phase %d: %d", phase, ret);
++ FAIL_EXIT1 ("invalid setuid return value in phase %d: %d", phase, ret);
+ }
+ }
+
+@@ -74,42 +69,42 @@ do_test (void)
+ {
+ if (getuid () == 0)
+ if (setuid (test_uid) != 0)
+- FAIL_ERR ("setuid (%u)", (unsigned) test_uid);
++ FAIL_EXIT1 ("setuid (%u): %m", (unsigned) test_uid);
+ if (setuid (getuid ()))
+- FAIL_ERR ("setuid (%s)", "getuid ()");
++ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()");
+ setuid_failure (1);
+
+ int ret = pthread_barrier_init (&barrier1, NULL, 2);
+ if (ret != 0)
+- FAIL ("pthread_barrier_init (barrier1): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_init (barrier1): %d", ret);
+ ret = pthread_barrier_init (&barrier2, NULL, 2);
+ if (ret != 0)
+- FAIL ("pthread_barrier_init (barrier2): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_init (barrier2): %d", ret);
+
+ pthread_t thread;
+ ret = pthread_create (&thread, NULL, thread_func, NULL);
+ if (ret != 0)
+- FAIL ("pthread_create: %d", ret);
++ FAIL_EXIT1 ("pthread_create: %d", ret);
+
+ /* Ensure that the thread is running properly. */
+ ret = pthread_barrier_wait (&barrier1);
+ if (is_invalid_barrier_ret (ret))
+- FAIL ("pthread_barrier_wait (barrier1): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_wait (barrier1): %d", ret);
+
+ setuid_failure (2);
+
+ /* Check success case. */
+ if (setuid (getuid ()) != 0)
+- FAIL_ERR ("setuid (%s)", "getuid ()");
++ FAIL_EXIT1 ("setuid (%s): %m", "getuid ()");
+
+ /* Shutdown. */
+ ret = pthread_barrier_wait (&barrier2);
+ if (is_invalid_barrier_ret (ret))
+- FAIL ("pthread_barrier_wait (barrier2): %d", ret);
++ FAIL_EXIT1 ("pthread_barrier_wait (barrier2): %d", ret);
+
+ ret = pthread_join (thread, NULL);
+ if (ret != 0)
+- FAIL ("pthread_join: %d", ret);
++ FAIL_EXIT1 ("pthread_join: %d", ret);
+
+ return 0;
+ }
+--
+2.33.0
+