tests: Fix test_syscall_setreuid to work with privilege checks
authorAndreas Schneider <asn@samba.org>
Tue, 27 Oct 2015 09:20:53 +0000 (10:20 +0100)
committerAndreas Schneider <asn@samba.org>
Tue, 27 Oct 2015 13:55:29 +0000 (14:55 +0100)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
tests/test_syscall_setreuid.c

index b40a8346dc6a55d2f15336a833eb2c76b50f78f2..3f5624ea00d3a09e5eef01c3ee0be830fdd1df53 100644 (file)
@@ -57,6 +57,15 @@ static void test_uwrap_syscall_setreuid(void **state)
        rc = syscall(SYS_setreuid, 0x4444, 0x5555);
        assert_return_code(rc, errno);
 
+#ifdef SYS_getresuid
+       cp_ruid = cp_euid = cp_suid = -1;
+       rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
+       assert_return_code(rc, errno);
+       assert_int_equal(cp_ruid, 0x4444);
+       assert_int_equal(cp_euid, 0x5555);
+       assert_int_equal(cp_suid, 0x5555);
+#endif
+
        u = getuid();
        assert_int_equal(u, 0x4444);
 
@@ -68,6 +77,16 @@ static void test_uwrap_syscall_setreuid(void **state)
 
        rc = syscall(SYS_setreuid, -1, 0x6666);
        assert_int_equal(rc, -1);
+       assert_int_equal(errno, EPERM);
+
+#ifdef SYS_getresuid
+       cp_ruid = cp_euid = cp_suid = -1;
+       rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
+       assert_return_code(rc, errno);
+       assert_int_equal(cp_ruid, 0x4444);
+       assert_int_equal(cp_euid, 0x5555);
+       assert_int_equal(cp_suid, 0x5555);
+#endif
 }
 
 int main(void) {