regexp = "^setreuid" suffix "\\(-1, -1\\)[[:space:]]+= 0$"
} else if (expected == "setreuid") {
expected = "setresuid"
- regexp = "^setresuid" suffix "\\(-1, " uid ", -1\\)[[:space:]]+= 0$"
+ regexp = "^setresuid" suffix "\\(" uid ", -1, -1\\)[[:space:]]+= 0$"
} else if (expected == "setresuid") {
expected = "chown"
regexp = "^chown" suffix "\\(\".\", -1, -1\\)[[:space:]]+= 0$"
&& defined(__NR_setresuid) \
&& defined(__NR_chown) \
&& defined(__NR_getgroups)
- int r, e, s;
+ int uid;
int size;
int *list = 0;
- e = syscall(__NR_getuid);
- assert(syscall(__NR_setuid, e) == 0);
- assert(syscall(__NR_getresuid, &r, &e, &s) == 0);
+ uid = syscall(__NR_getuid);
+ assert(syscall(__NR_setuid, uid) == 0);
+ {
+ /*
+ * uids returned by getresuid should be ignored
+ * to avoid 16bit vs 32bit issues.
+ */
+ int r, e, s;
+ assert(syscall(__NR_getresuid, &r, &e, &s) == 0);
+ }
assert(syscall(__NR_setreuid, -1, -1L) == 0);
- assert(syscall(__NR_setresuid, -1, e, -1L) == 0);
+ assert(syscall(__NR_setresuid, uid, -1, -1L) == 0);
assert(syscall(__NR_chown, ".", -1, -1L) == 0);
assert((size = syscall(__NR_getgroups, 0, list)) >= 0);
assert(list = calloc(size + 1, sizeof(*list)));
&& __NR_chown != __NR_chown32 \
&& __NR_getgroups != __NR_getgroups32 \
/**/
- int r, e, s;
+ int uid;
int size;
int *list = 0;
- e = syscall(__NR_getuid);
- assert(syscall(__NR_setuid, e) == 0);
- assert(syscall(__NR_getresuid, &r, &e, &s) == 0);
+ uid = syscall(__NR_getuid);
+ assert(syscall(__NR_setuid, uid) == 0);
+ {
+ /*
+ * uids returned by getresuid should be ignored
+ * to avoid 16bit vs 32bit issues.
+ */
+ int r, e, s;
+ assert(syscall(__NR_getresuid, &r, &e, &s) == 0);
+ }
assert(syscall(__NR_setreuid, -1, 0xffff) == 0);
- assert(syscall(__NR_setresuid, -1, e, 0xffff) == 0);
+ assert(syscall(__NR_setresuid, uid, -1, 0xffff) == 0);
assert(syscall(__NR_chown, ".", -1, 0xffff) == 0);
assert((size = syscall(__NR_getgroups, 0, list)) >= 0);
assert(list = calloc(size + 1, sizeof(*list)));
int size;
int *list = 0;
- e = syscall(__NR_getuid32);
- assert(syscall(__NR_setuid32, e) == 0);
+ r = syscall(__NR_getuid32);
+ assert(syscall(__NR_setuid32, r) == 0);
assert(syscall(__NR_getresuid32, &r, &e, &s) == 0);
assert(syscall(__NR_setreuid32, -1, -1L) == 0);
- assert(syscall(__NR_setresuid32, -1, e, -1L) == 0);
+ assert(syscall(__NR_setresuid32, r, -1, -1L) == 0);
assert(syscall(__NR_chown32, ".", -1, -1L) == 0);
assert((size = syscall(__NR_getgroups32, 0, list)) >= 0);
assert(list = calloc(size + 1, sizeof(*list)));