diff mbox series

syscalls/setfsgid02: Bugfix for running as root

Message ID 20210428124939.23546-1-zhaogongyi@huawei.com
State Changes Requested
Headers show
Series syscalls/setfsgid02: Bugfix for running as root | expand

Commit Message

Zhao Gongyi April 28, 2021, 12:49 p.m. UTC
When we run the test as root id, and with the option "-i 2",
test will fail.

Signed-off-by: Zhao Gongyi <zhaogongyi@huawei.com>
---
 testcases/kernel/syscalls/setfsgid/setfsgid02.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--
2.17.1

Comments

Cyril Hrubis April 28, 2021, 1:56 p.m. UTC | #1
Hi!
> When we run the test as root id, and with the option "-i 2",
> test will fail.

Looking at the test there is much more to fix.

- the description does not match what the test is doing
- the pass/fail condition and TFAIL message does not make any sense

And its the same for the rest of the setfsgid tests.

Looking at the manual pages for this oddball syscall we should check if:

- unpriviledged process cannot change the value i.e. value that is
  different from return from ret=setfsgid(-1) is passed as
  setfsgid(ret+1) followed by setfsgid(-1) and all of these returns the
  same value and the value also matches process effective group ID

- priviledged process can change the value i.e. the same as
  unpriviledged but we expect the last setfsgid(-1) return
  the new value. We either have to reset the setfsgid() at the end of
  the test or run it in a fork()-ed process so that we start with a
  clean plate for each iteration
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/setfsgid/setfsgid02.c b/testcases/kernel/syscalls/setfsgid/setfsgid02.c
index 4788957e2..a5485294e 100644
--- a/testcases/kernel/syscalls/setfsgid/setfsgid02.c
+++ b/testcases/kernel/syscalls/setfsgid/setfsgid02.c
@@ -49,10 +49,11 @@  int main(int ac, char **av)

 	setup();

+	gid = 1;
+
 	for (lc = 0; TEST_LOOPING(lc); lc++) {
 		tst_count = 0;

-		gid = 1;
 		while (getgrgid(gid))
 			gid++;

@@ -73,6 +74,8 @@  int main(int ac, char **av)
 			tst_resm(TPASS, "setfsgid() returned expected value : "
 				 "%ld", TEST_RETURN);
 		}
+
+		gid++;
 	}

 	cleanup();