The branch, master has been updated via b41c6d9 tests: Add test_uwrap_syscall_setresuid() via b1de1e9 tests: Fix syscall detection via c0edc8f tests: Add test for syscall SYS_setresgid via ddd8310 tests: Update to new cmocka test runner via bb127f5 uwrap: Fix build if getres(uid|gid) are not available. from 544a538 cmake: Drop test results via https.
https://git.samba.org/?p=uid_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit b41c6d98229d97e3517179e49f655bd16e314193 Author: Andreas Schneider <a...@samba.org> Date: Fri Jul 31 14:25:21 2015 +0200 tests: Add test_uwrap_syscall_setresuid() Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit b1de1e9b55a99f5324875b3ba7e18037fe2906db Author: Andreas Schneider <a...@samba.org> Date: Fri Jul 31 14:11:45 2015 +0200 tests: Fix syscall detection Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit c0edc8f4ee88b59ecb8a24019a6915588ea74be9 Author: Andreas Schneider <a...@samba.org> Date: Fri Jul 31 14:07:20 2015 +0200 tests: Add test for syscall SYS_setresgid Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit ddd831096360e9f3197a1d394c83c18da8590dbf Author: Andreas Schneider <a...@samba.org> Date: Fri Jul 31 14:03:19 2015 +0200 tests: Update to new cmocka test runner Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> commit bb127f58e468524b167a015b864ac3ba12e9c5ed Author: Andreas Schneider <a...@samba.org> Date: Fri Jan 23 16:01:49 2015 +0100 uwrap: Fix build if getres(uid|gid) are not available. Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Michael Adam <ob...@samba.org> ----------------------------------------------------------------------- Summary of changes: src/uid_wrapper.c | 8 +-- tests/test_glibc_thread_support.c | 18 ++--- tests/test_uwrap_disabled.c | 30 +++++---- tests/test_uwrap_enabled.c | 6 +- tests/testsuite.c | 138 +++++++++++++++++++++++++++++++------- 5 files changed, 148 insertions(+), 52 deletions(-) Changeset truncated at 500 lines: diff --git a/src/uid_wrapper.c b/src/uid_wrapper.c index 1d49a85..a5e4fe5 100644 --- a/src/uid_wrapper.c +++ b/src/uid_wrapper.c @@ -1537,7 +1537,7 @@ static long int uwrap_syscall (long int sysno, va_list vp) } break; #endif /* SYS_setresgid */ -#ifdef SYS_getresgid +#if defined(SYS_getresgid) && defined(HAVE_GETRESGID) case SYS_getresgid: #ifdef HAVE_LINUX_32BIT_SYSCALLS case SYS_getresgid32: @@ -1550,7 +1550,7 @@ static long int uwrap_syscall (long int sysno, va_list vp) rc = uwrap_getresgid(rgid, egid, sgid); } break; -#endif /* SYS_getresgid */ +#endif /* SYS_getresgid && HAVE_GETRESGID */ /* uid */ case SYS_getuid: @@ -1606,7 +1606,7 @@ static long int uwrap_syscall (long int sysno, va_list vp) } break; #endif /* SYS_setresuid */ -#ifdef SYS_getresuid +#if defined(SYS_getresuid) && defined(HAVE_GETRESUID) case SYS_getresuid: #ifdef HAVE_LINUX_32BIT_SYSCALLS case SYS_getresuid32: @@ -1619,7 +1619,7 @@ static long int uwrap_syscall (long int sysno, va_list vp) rc = uwrap_getresuid(ruid, euid, suid); } break; -#endif /* SYS_getresuid */ +#endif /* SYS_getresuid && HAVE_GETRESUID*/ /* groups */ case SYS_setgroups: #ifdef HAVE_LINUX_32BIT_SYSCALLS diff --git a/tests/test_glibc_thread_support.c b/tests/test_glibc_thread_support.c index 31a7b7b..e902b0d 100644 --- a/tests/test_glibc_thread_support.c +++ b/tests/test_glibc_thread_support.c @@ -454,17 +454,17 @@ static void test_thread_create_thread_setgid(void **state) int main(void) { int rc; - const UnitTest tests[] = { - unit_test(test_syscall_setreuid), - unit_test(test_sync_setreuid), - unit_test(test_sync_setgid), - unit_test(test_sync_setgid_syscall), - unit_test(test_real_sync_setuid), - unit_test(test_sync_setgroups), - unit_test(test_thread_create_thread_setgid), + const struct CMUnitTest thread_tests[] = { + cmocka_unit_test(test_syscall_setreuid), + cmocka_unit_test(test_sync_setreuid), + cmocka_unit_test(test_sync_setgid), + cmocka_unit_test(test_sync_setgid_syscall), + cmocka_unit_test(test_real_sync_setuid), + cmocka_unit_test(test_sync_setgroups), + cmocka_unit_test(test_thread_create_thread_setgid), }; - rc = run_tests(tests); + rc = cmocka_run_group_tests(thread_tests, NULL, NULL); return rc; } diff --git a/tests/test_uwrap_disabled.c b/tests/test_uwrap_disabled.c index f2336a4..c830e1d 100644 --- a/tests/test_uwrap_disabled.c +++ b/tests/test_uwrap_disabled.c @@ -23,7 +23,7 @@ struct test_opts { gid_t nbgid; }; -static void setup(void **state) +static int setup(void **state) { struct test_opts *t; struct passwd *pwd; @@ -47,9 +47,11 @@ static void setup(void **state) } *state = t; + + return 0; } -static void teardown(void **state) +static int teardown(void **state) { struct test_opts *t = (struct test_opts *)*state; @@ -59,6 +61,8 @@ static void teardown(void **state) setegid(t->mygid); free(t); + + return 0; } static void test_uwrap_setuid(void **state) @@ -235,27 +239,27 @@ int main(void) { int rc; - const UnitTest tests[] = { - unit_test_setup_teardown(test_uwrap_setuid, setup, teardown), - unit_test_setup_teardown(test_uwrap_seteuid, setup, teardown), + const struct CMUnitTest tests[] = { + cmocka_unit_test_setup_teardown(test_uwrap_setuid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_seteuid, setup, teardown), #ifdef HAVE_SETREUID - unit_test_setup_teardown(test_uwrap_setreuid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setreuid, setup, teardown), #endif #ifdef HAVE_SETRESUID - unit_test_setup_teardown(test_uwrap_setresuid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setresuid, setup, teardown), #endif - unit_test_setup_teardown(test_uwrap_setgid, setup, teardown), - unit_test_setup_teardown(test_uwrap_setegid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setgid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setegid, setup, teardown), #ifdef HAVE_SETREGID - unit_test_setup_teardown(test_uwrap_setregid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setregid, setup, teardown), #endif #ifdef HAVE_SETRESGID - unit_test_setup_teardown(test_uwrap_setresgid, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setresgid, setup, teardown), #endif - unit_test_setup_teardown(test_uwrap_setgroups, setup, teardown), + cmocka_unit_test_setup_teardown(test_uwrap_setgroups, setup, teardown), }; - rc = run_tests(tests); + rc = cmocka_run_group_tests(tests, NULL, NULL); return rc; } diff --git a/tests/test_uwrap_enabled.c b/tests/test_uwrap_enabled.c index b0be077..9cc8387 100644 --- a/tests/test_uwrap_enabled.c +++ b/tests/test_uwrap_enabled.c @@ -22,11 +22,11 @@ static void test_uid_wrapper_enabled(void **state) int main(void) { int rc; - const UnitTest tests[] = { - unit_test(test_uid_wrapper_enabled), + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_uid_wrapper_enabled), }; - rc = run_tests(tests); + rc = cmocka_run_group_tests(tests, NULL, NULL); return rc; } diff --git a/tests/testsuite.c b/tests/testsuite.c index 38c9b77..332b73f 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -245,21 +245,68 @@ static void test_uwrap_syscall_setreuid(void **state) (void) state; /* unused */ +#if defined(SYS_setreuid) rc = syscall(SYS_setreuid, -1, 0); +#elif defined(SYS_setreuid32) + rc = syscall(SYS_setreuid32, -1, 0); +#endif assert_int_equal(rc, 0); u = geteuid(); -#ifdef SYS_geteuid /* not available on Solaris */ +#if defined(SYS_geteuid) /* not available on Solaris */ assert_int_equal(u, syscall(SYS_geteuid)); +#elif defined(SYS_geteuid32) + assert_int_equal(u, syscall(SYS_geteuid32)); #endif +#if defined(SYS_setreuid) rc = syscall(SYS_setreuid, -1, 42); +#elif defined(SYS_setreuid32) + rc = syscall(SYS_setreuid32, -1, 42); +#endif assert_int_equal(rc, 0); u = geteuid(); assert_int_equal(u, 42); } +static void test_uwrap_syscall_setresuid(void **state) +{ + long int rc; + uid_t u; + uid_t u_r, u_e, u_s; + + (void) state; /* unused */ + + rc = syscall(SYS_setresuid, -1, 0, -1); + assert_int_equal(rc, 0); + + u = geteuid(); +#if defined(SYS_getresuid) /* not available on Solaris */ + rc = syscall(SYS_getresuid, &u_r, &u_e, &u_s); + assert_return_code(rc, errno); + + assert_int_equal(u_r, 42); + assert_int_equal(u, u_e); +#elif defined(SYS_getresuid32) + rc = syscall(SYS_getresuid32, &u_r, &u_e, &u_s); + assert_return_code(rc, errno); + + assert_int_equal(u_r, 42); + assert_int_equal(u, u_e); +#endif + +#if defined(SYS_setreuid) + rc = syscall(SYS_setreuid, -1, 42); +#elif defined(SYS_setreuid) + rc = syscall(SYS_setreuid32, -1, 42); +#endif + assert_return_code(rc, errno); + + u = geteuid(); + assert_int_equal(u, 42); +} + static void test_uwrap_syscall_setregid(void **state) { long int rc; @@ -267,18 +314,61 @@ static void test_uwrap_syscall_setregid(void **state) (void) state; /* unused */ +#if defined(SYS_setregid) rc = syscall(SYS_setregid, -1, 0); +#elif defined(SYS_setregid32) + rc = syscall(SYS_setregid32, -1, 0); +#endif assert_int_equal(rc, 0); g = getegid(); -#ifdef SYS_getegid /* Not available on Solaris */ +#if defined(SYS_getegid) /* Not available on Solaris */ assert_int_equal(g, syscall(SYS_getegid)); +#elif defined(SYS_getegid32) + assert_int_equal(g, syscall(SYS_getegid32)); #endif +#if defined(SYS_setregid) rc = syscall(SYS_setregid, -1, 42); +#elif defined(SYS_setregid32) + rc = syscall(SYS_setregid32, -1, 42); +#endif + assert_int_equal(rc, 0); + + g = getegid(); + assert_int_equal(g, 42); +} + +static void test_uwrap_syscall_setresgid(void **state) +{ + long int rc; + gid_t g; + gid_t g_r, g_e, g_s; + + (void) state; /* unused */ + + rc = syscall(SYS_setresgid, -1, 0, -1); assert_int_equal(rc, 0); g = getegid(); +#if defined(SYS_getresgid) /* Not available on Solaris */ + rc = syscall(SYS_getresgid, &g_r, &g_e, &g_s); + assert_return_code(rc, errno); + + assert_int_equal(g_r, 42); + assert_int_equal(g, g_e); +#elif defined(SYS_getresgid32) + rc = syscall(SYS_getresgid32, &g_r, &g_e, &g_s); + assert_return_code(rc, errno); + + assert_int_equal(g_r, 42); + assert_int_equal(g, g_e); +#endif + + rc = syscall(SYS_setregid, -1, 42); + assert_return_code(rc, errno); + + g = getegid(); assert_int_equal(g, 42); } @@ -334,9 +424,9 @@ static void test_uwrap_syscall_setgroups(void **state) (void) state; /* unused */ -#ifdef SYS_setgroups +#if defined(SYS_setgroups) rc = syscall(SYS_setgroups, ARRAY_SIZE(glist), glist); -#elif SYS_setgroups32 +#elif defined (SYS_setgroups32) rc = syscall(SYS_setgroups32, ARRAY_SIZE(glist), glist); #endif assert_int_equal(rc, 0); @@ -348,9 +438,9 @@ static void test_uwrap_syscall_setgroups(void **state) /* Drop all supplementary groups. This is often done by daemons */ memset(rlist, 0, sizeof(rlist)); -#ifdef SYS_setgroups +#if defined(SYS_setgroups) rc = syscall(SYS_setgroups, 0, NULL); -#elif SYS_setgroups32 +#elif defined(SYS_setgroups32) rc = syscall(SYS_setgroups32, 0, NULL); #endif assert_int_equal(rc, 0); @@ -365,38 +455,40 @@ static void test_uwrap_syscall_setgroups(void **state) int main(void) { int rc; - const UnitTest tests[] = { - unit_test(test_uwrap_syscall), - unit_test(test_uwrap_getgroups), + const struct CMUnitTest uwrap_tests[] = { + cmocka_unit_test(test_uwrap_syscall), + cmocka_unit_test(test_uwrap_getgroups), - unit_test(test_uwrap_seteuid), + cmocka_unit_test(test_uwrap_seteuid), #ifdef HAVE_SETREUID - unit_test(test_uwrap_setreuid), + cmocka_unit_test(test_uwrap_setreuid), #endif #ifdef HAVE_SETRESUID - unit_test(test_uwrap_setresuid), + cmocka_unit_test(test_uwrap_setresuid), #endif #ifdef HAVE_GETRESUID - unit_test(test_uwrap_getresuid), + cmocka_unit_test(test_uwrap_getresuid), #endif - unit_test(test_uwrap_setuid), - unit_test(test_uwrap_setegid), + cmocka_unit_test(test_uwrap_setuid), + cmocka_unit_test(test_uwrap_setegid), #ifdef HAVE_SETREGID - unit_test(test_uwrap_setregid), + cmocka_unit_test(test_uwrap_setregid), #endif #ifdef HAVE_SETRESGID - unit_test(test_uwrap_setresgid), + cmocka_unit_test(test_uwrap_setresgid), #endif - unit_test(test_uwrap_setgid), - unit_test(test_uwrap_syscall_setreuid), - unit_test(test_uwrap_syscall_setregid), - unit_test(test_uwrap_setgroups), + cmocka_unit_test(test_uwrap_setgid), + cmocka_unit_test(test_uwrap_syscall_setreuid), + cmocka_unit_test(test_uwrap_syscall_setresuid), + cmocka_unit_test(test_uwrap_syscall_setregid), + cmocka_unit_test(test_uwrap_syscall_setresgid), + cmocka_unit_test(test_uwrap_setgroups), #if defined(SYS_setgroups) || defined(SYS_setroups32) - unit_test(test_uwrap_syscall_setgroups), + cmocka_unit_test(test_uwrap_syscall_setgroups), #endif }; - rc = run_tests(tests); + rc = cmocka_run_group_tests(uwrap_tests, NULL, NULL); return rc; } -- UID Wrapper Repository