summaryrefslogtreecommitdiffhomepage
path: root/test/syscalls/linux/chown.cc
diff options
context:
space:
mode:
authorAdin Scannell <ascannell@google.com>2020-12-02 10:46:10 -0800
committergVisor bot <gvisor-bot@google.com>2020-12-02 10:53:52 -0800
commit7ccb0b6a7cd7fa33f2d58484aed5cfe1709018ca (patch)
tree1e298423579b3559bf95d1951d6f3e9c66b44f9a /test/syscalls/linux/chown.cc
parentb11f40db1ec2afed67d7227fd5b79e9897ffbf1d (diff)
Fix chown test.
PiperOrigin-RevId: 345265342
Diffstat (limited to 'test/syscalls/linux/chown.cc')
-rw-r--r--test/syscalls/linux/chown.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/test/syscalls/linux/chown.cc b/test/syscalls/linux/chown.cc
index 82223f997..5530ad18f 100644
--- a/test/syscalls/linux/chown.cc
+++ b/test/syscalls/linux/chown.cc
@@ -75,7 +75,16 @@ TEST_P(ChownParamTest, ChownFileSucceeds) {
if (num_groups > 0) {
std::vector<gid_t> list(num_groups);
EXPECT_THAT(getgroups(list.size(), list.data()), SyscallSucceeds());
- gid = list[0];
+ // Scan the list of groups for a valid gid. Note that if a group is not
+ // defined in this local user namespace, then we will see 65534, and the
+ // group will not chown below as expected. So only change if we find a
+ // valid group in this list.
+ for (const gid_t other_gid : list) {
+ if (other_gid != 65534) {
+ gid = other_gid;
+ break;
+ }
+ }
}
EXPECT_NO_ERRNO(GetParam()(file.path(), geteuid(), gid));