forked from rpms/glibc
53 lines
1.7 KiB
Diff
53 lines
1.7 KiB
Diff
commit 6286cca2cb8389dcffec39238a8bf15ffea96396
|
|
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
|
|
Date: Thu Jun 1 07:23:15 2023 -0400
|
|
|
|
support: Don't fail on fchown when spawning sgid processes
|
|
|
|
In some cases (e.g. when podman creates user containers), the only other
|
|
group assigned to the executing user is nobody and fchown fails with it
|
|
because the group is not mapped. Do not fail the test in this case,
|
|
instead exit as unsupported.
|
|
|
|
Reported-by: Frédéric Bérat <fberat@redhat.com>
|
|
Tested-by: Frédéric Bérat <fberat@redhat.com>
|
|
Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
|
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
|
|
|
diff --git a/support/support_capture_subprocess.c b/support/support_capture_subprocess.c
|
|
index 9da5ba0c10bf6eee..af03ea4dc6ec0b95 100644
|
|
--- a/support/support_capture_subprocess.c
|
|
+++ b/support/support_capture_subprocess.c
|
|
@@ -152,9 +152,18 @@ copy_and_spawn_sgid (char *child_id, gid_t gid)
|
|
p += wrcount;
|
|
}
|
|
}
|
|
- TEST_VERIFY (fchown (outfd, getuid (), gid) == 0);
|
|
+
|
|
+ bool chowned = false;
|
|
+ TEST_VERIFY ((chowned = fchown (outfd, getuid (), gid) == 0)
|
|
+ || errno == EPERM);
|
|
if (support_record_failure_is_failed ())
|
|
goto err;
|
|
+ else if (!chowned)
|
|
+ {
|
|
+ ret = 77;
|
|
+ goto err;
|
|
+ }
|
|
+
|
|
TEST_VERIFY (fchmod (outfd, 02750) == 0);
|
|
if (support_record_failure_is_failed ())
|
|
goto err;
|
|
@@ -191,8 +200,10 @@ err:
|
|
free (dirname);
|
|
}
|
|
|
|
+ if (ret == 77)
|
|
+ FAIL_UNSUPPORTED ("Failed to make sgid executable for test\n");
|
|
if (ret != 0)
|
|
- FAIL_EXIT1("Failed to make sgid executable for test\n");
|
|
+ FAIL_EXIT1 ("Failed to make sgid executable for test\n");
|
|
|
|
return status;
|
|
}
|