--- /dev/null
+#include "config.h"
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <errno.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <pwd.h>
+
+#ifdef HAVE_SYS_SYSCALL_H
+#include <sys/syscall.h>
+#endif
+#ifdef HAVE_SYSCALL_H
+#include <syscall.h>
+#endif
+
+static void test_uwrap_syscall_setreuid(void **state)
+{
+ long int rc;
+ uid_t u;
+
+ (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();
+#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, 42, 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);
+}
+
+int main(void) {
+ int rc;
+
+ const struct CMUnitTest uwrap_tests[] = {
+ cmocka_unit_test(test_uwrap_syscall_setreuid),
+ cmocka_unit_test(test_uwrap_syscall_setresuid),
+ };
+
+ rc = cmocka_run_group_tests(uwrap_tests, NULL, NULL);
+
+ return rc;
+}
#include <errno.h>
#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
#include <unistd.h>
-#include <pwd.h>
#include <grp.h>
#ifdef HAVE_SYS_SYSCALL_H
#include <syscall.h>
#endif
-#define ZERO_STRUCT(x) memset((char *)&(x), 0, sizeof(x))
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
-static void test_uwrap_syscall_setreuid(void **state)
-{
- long int rc;
- uid_t u;
-
- (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();
-#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, 42, 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;
int rc;
const struct CMUnitTest uwrap_tests[] = {
- 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),
#if defined(SYS_setgroups) || defined(SYS_setroups32)