14 #ifdef HAVE_SYS_SYSCALL_H
15 #include <sys/syscall.h>
21 static void test_uwrap_syscall_setreuid(void **state)
26 uid_t cp_ruid, cp_euid, cp_suid;
29 (void) state; /* unused */
32 assert_int_equal(u, 0);
34 assert_int_equal(u, 0);
37 cp_ruid = cp_euid = cp_suid = -1;
38 rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
39 assert_return_code(rc, errno);
40 assert_int_equal(cp_ruid, 0);
41 assert_int_equal(cp_euid, 0);
42 assert_int_equal(cp_suid, 0);
45 rc = syscall(SYS_setreuid, -1, -1);
46 assert_return_code(rc, errno);
49 cp_ruid = cp_euid = cp_suid = -1;
50 rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
51 assert_return_code(rc, errno);
52 assert_int_equal(cp_ruid, 0);
53 assert_int_equal(cp_euid, 0);
54 assert_int_equal(cp_suid, 0);
57 rc = syscall(SYS_setreuid, 0x4444, 0x5555);
58 assert_return_code(rc, errno);
61 cp_ruid = cp_euid = cp_suid = -1;
62 rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
63 assert_return_code(rc, errno);
64 assert_int_equal(cp_ruid, 0x4444);
65 assert_int_equal(cp_euid, 0x5555);
66 assert_int_equal(cp_suid, 0x5555);
70 assert_int_equal(u, 0x4444);
73 assert_int_equal(u, 0x5555);
74 #ifdef SYS_geteuid /* not available on Solaris */
75 assert_int_equal(u, syscall(SYS_geteuid));
78 rc = syscall(SYS_setreuid, -1, 0x6666);
79 assert_int_equal(rc, -1);
80 assert_int_equal(errno, EPERM);
83 cp_ruid = cp_euid = cp_suid = -1;
84 rc = syscall(SYS_getresuid, &cp_ruid, &cp_euid, &cp_suid);
85 assert_return_code(rc, errno);
86 assert_int_equal(cp_ruid, 0x4444);
87 assert_int_equal(cp_euid, 0x5555);
88 assert_int_equal(cp_suid, 0x5555);
95 const struct CMUnitTest uwrap_tests[] = {
96 cmocka_unit_test(test_uwrap_syscall_setreuid),
99 rc = cmocka_run_group_tests(uwrap_tests, NULL, NULL);