From e5c6dcac8768ac88a58095072d407327f7de0116 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Thu, 19 Sep 2024 12:21:55 +0200 Subject: [PATCH] test-process-util: Ignore EINVAL from setresuid() and setresgid() If we're running in a user namespace with a single user and without the nobody user, we'll get EINVAL from these system calls so make sure we handle those gracefully. --- src/test/test-process-util.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/test-process-util.c b/src/test/test-process-util.c index bf4d94e8c05..e6ba6fea707 100644 --- a/src/test/test-process-util.c +++ b/src/test/test-process-util.c @@ -729,11 +729,13 @@ TEST(setpriority_closest) { /* However, if the hard limit was above 30, setrlimit would succeed unprivileged, so * check if the UID/GID can be changed before enabling the full test. */ if (setresgid(GID_NOBODY, GID_NOBODY, GID_NOBODY) < 0) { - if (!ERRNO_IS_PRIVILEGE(errno)) + /* If the nobody user does not exist (user namespace) we get EINVAL. */ + if (!ERRNO_IS_PRIVILEGE(errno) && errno != EINVAL) ASSERT_OK_ERRNO(-1); full_test = false; } else if (setresuid(UID_NOBODY, UID_NOBODY, UID_NOBODY) < 0) { - if (!ERRNO_IS_PRIVILEGE(errno)) + /* If the nobody user does not exist (user namespace) we get EINVAL. */ + if (!ERRNO_IS_PRIVILEGE(errno) && errno != EINVAL) ASSERT_OK_ERRNO(-1); full_test = false; } else -- 2.47.3