10 #include <sys/types.h>
15 #ifdef HAVE_SYS_SYSCALL_H
16 #include <sys/syscall.h>
22 static void test_uwrap_syscall_setgid32_root(void **state)
28 gid_t cp_rgid, cp_egid, cp_sgid;
31 (void) state; /* unused */
34 assert_int_equal(u, 0x0);
36 assert_int_equal(u, 0x0);
39 cp_rgid = cp_egid = cp_sgid = -1;
40 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
41 assert_return_code(rc, errno);
42 assert_int_equal(cp_rgid, 0);
43 assert_int_equal(cp_egid, 0);
44 assert_int_equal(cp_sgid, 0);
48 assert_int_equal(g, 0x0);
51 assert_int_equal(g, 0x0);
53 rc = syscall(SYS_setgid32, -1);
54 assert_int_equal(rc, -1);
55 assert_int_equal(errno, EINVAL);
58 cp_rgid = cp_egid = cp_sgid = -1;
59 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
60 assert_return_code(rc, errno);
61 assert_int_equal(cp_rgid, 0);
62 assert_int_equal(cp_egid, 0);
63 assert_int_equal(cp_sgid, 0);
66 rc = syscall(SYS_setgid32, 0x5555);
67 assert_return_code(rc, errno);
70 cp_rgid = cp_egid = cp_sgid = -1;
71 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
72 assert_return_code(rc, errno);
73 assert_int_equal(cp_rgid, 0x5555);
74 assert_int_equal(cp_egid, 0x5555);
75 assert_int_equal(cp_sgid, 0x5555);
79 assert_int_equal(g, 0x5555);
82 assert_int_equal(g, 0x5555);
85 assert_return_code(rc, errno);
88 static void test_uwrap_syscall_setgid32_user(void **state)
93 gid_t cp_rgid, cp_egid, cp_sgid;
96 (void) state; /* unused */
99 assert_int_equal(u, 0x0);
101 assert_int_equal(u, 0x0);
103 #ifdef HAVE_GETRESGID
104 cp_rgid = cp_egid = cp_sgid = -1;
105 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
106 assert_return_code(rc, errno);
107 assert_int_equal(cp_rgid, 0);
108 assert_int_equal(cp_egid, 0);
109 assert_int_equal(cp_sgid, 0);
113 assert_return_code(rc, errno);
116 assert_int_equal(u, 0x5555);
118 assert_int_equal(u, 0x5555);
120 #ifdef HAVE_GETRESGID
121 cp_rgid = cp_egid = cp_sgid = -1;
122 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
123 assert_return_code(rc, errno);
124 assert_int_equal(cp_rgid, 0);
125 assert_int_equal(cp_egid, 0);
126 assert_int_equal(cp_sgid, 0);
129 rc = syscall(SYS_setgid32, 0x5555);
130 assert_int_equal(rc, -1);
131 assert_int_equal(errno, EPERM);
133 #ifdef HAVE_GETRESGID
134 cp_rgid = cp_egid = cp_sgid = -1;
135 rc = getresgid(&cp_rgid, &cp_egid, &cp_sgid);
136 assert_return_code(rc, errno);
137 assert_int_equal(cp_rgid, 0);
138 assert_int_equal(cp_egid, 0);
139 assert_int_equal(cp_sgid, 0);
142 rc = syscall(SYS_setgid32, 0x0);
143 assert_return_code(rc, errno);
149 const struct CMUnitTest uwrap_tests[] = {
150 cmocka_unit_test(test_uwrap_syscall_setgid32_root),
151 cmocka_unit_test(test_uwrap_syscall_setgid32_user),
154 rc = cmocka_run_group_tests(uwrap_tests, NULL, NULL);