The branch, master has been updated via f48c658 tests: fix unused-result error in tests/test_uwrap_disabled.c via 9c12a53 tests: fix unused-result error in tests/test_setresgid_unprivileged.c via df5a03e uid_wrapper.c: fall back to pragma init/fini for constructor/destructor if possible via c011b31 configure: check for pragma init/fini for constructors/destructors from c95573e gitlab-ci: Add Ubuntu runner
https://git.samba.org/?p=uid_wrapper.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit f48c65812849e0564d66569836f3ee73e58574a2 Author: Björn Jacke <b...@sernet.de> Date: Fri Oct 30 18:18:05 2020 +0100 tests: fix unused-result error in tests/test_uwrap_disabled.c Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit 9c12a53610b4620be4ad96bae1af855eb4e0abdf Author: Björn Jacke <b...@sernet.de> Date: Fri Oct 30 18:03:08 2020 +0100 tests: fix unused-result error in tests/test_setresgid_unprivileged.c Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit df5a03ef37c8305384d304a357da8a10c1e8edda Author: Björn Jacke <bja...@samba.org> Date: Fri Oct 30 15:23:02 2020 +0100 uid_wrapper.c: fall back to pragma init/fini for constructor/destructor if possible Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> commit c011b319f7bf953e577a65ea18b9491d8cc9354c Author: Björn Jacke <bja...@samba.org> Date: Fri Oct 30 15:05:36 2020 +0100 configure: check for pragma init/fini for constructors/destructors Signed-off-by: Bjoern Jacke <bja...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: ConfigureChecks.cmake | 26 ++++++++++++++++++++++++++ config.h.cmake | 2 ++ src/uid_wrapper.c | 7 +++++++ tests/test_setresgid_unprivileged.c | 9 ++++++--- tests/test_uwrap_disabled.c | 13 +++++++++---- 5 files changed, 50 insertions(+), 7 deletions(-) Changeset truncated at 500 lines: diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index 0e2d84f..930904e 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -163,6 +163,32 @@ int main(void) { return 0; }" HAVE_DESTRUCTOR_ATTRIBUTE) +check_c_source_compiles(" +#pragma init (test_constructor) +void test_constructor(void); + +void test_constructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_INIT) + +check_c_source_compiles(" +#pragma fini (test_destructor) +void test_destructor(void); + +void test_destructor(void) +{ + return; +} + +int main(void) { + return 0; +}" HAVE_PRAGMA_FINI) + # If this produces a warning treat it as error! set(CMAKE_REQUIRED_FLAGS "-Werror") check_c_source_compiles(" diff --git a/config.h.cmake b/config.h.cmake index a3f3815..8e05723 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -61,6 +61,8 @@ #cmakedefine HAVE_GCC_ATOMIC_BUILTINS 1 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1 +#cmakedefine HAVE_PRAGMA_INIT 1 +#cmakedefine HAVE_PRAGMA_FINI 1 #cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1 #cmakedefine HAVE_FUNCTION_ATTRIBUTE_FORMAT 1 #cmakedefine HAVE_FALLTHROUGH_ATTRIBUTE 1 diff --git a/src/uid_wrapper.c b/src/uid_wrapper.c index 6e4a6da..4d31f52 100644 --- a/src/uid_wrapper.c +++ b/src/uid_wrapper.c @@ -374,7 +374,14 @@ static pthread_mutex_t libpthread_symbol_binding_mutex = PTHREAD_MUTEX_INITIALIZ *********************************************************/ bool uid_wrapper_enabled(void); +#if ! defined(HAVE_CONSTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_INIT) +/* xlC and other oldschool compilers support (only) this */ +#pragma init (uwrap_constructor) +#endif void uwrap_constructor(void) CONSTRUCTOR_ATTRIBUTE; +#if ! defined(HAVE_DESTRUCTOR_ATTRIBUTE) && defined(HAVE_PRAGMA_FINI) +#pragma fini (uwrap_destructor) +#endif void uwrap_destructor(void) DESTRUCTOR_ATTRIBUTE; /********************************************************* diff --git a/tests/test_setresgid_unprivileged.c b/tests/test_setresgid_unprivileged.c index 121c2cc..1383d29 100644 --- a/tests/test_setresgid_unprivileged.c +++ b/tests/test_setresgid_unprivileged.c @@ -74,7 +74,8 @@ static void test_uwrap_setresgid_unprivileged_uid(void **state) assert_int_equal(cp_egid, 0x0); assert_int_equal(cp_sgid, 0x0); - setresuid(0x0, 0x0, 0x0); + rc = setresuid(0x0, 0x0, 0x0); + assert_int_equal(rc, 0x0); } static void test_uwrap_setresgid_unprivileged_uid_and_gid(void **state) @@ -129,8 +130,10 @@ static void test_uwrap_setresgid_unprivileged_uid_and_gid(void **state) assert_int_equal(rc, -1); assert_int_equal(errno, EPERM); - setresuid(0x0, 0x0, 0x0); - setresgid(0x0, 0x0, 0x0); + rc = setresuid(0x0, 0x0, 0x0); + assert_int_equal(rc, 0x0); + rc = setresgid(0x0, 0x0, 0x0); + assert_int_equal(rc, 0x0); } int main(void) { diff --git a/tests/test_uwrap_disabled.c b/tests/test_uwrap_disabled.c index c830e1d..52a2bf0 100644 --- a/tests/test_uwrap_disabled.c +++ b/tests/test_uwrap_disabled.c @@ -53,12 +53,17 @@ static int setup(void **state) static int teardown(void **state) { + int rc; struct test_opts *t = (struct test_opts *)*state; - setuid(t->myuid); - seteuid(t->myuid); - setgid(t->mygid); - setegid(t->mygid); + rc = setuid(t->myuid); + assert_int_equal(rc, 0x0); + rc = seteuid(t->myuid); + assert_int_equal(rc, 0x0); + rc = setgid(t->mygid); + assert_int_equal(rc, 0x0); + rc = setegid(t->mygid); + assert_int_equal(rc, 0x0); free(t); -- UID Wrapper Repository