From: Dmitry V. Levin Date: Wed, 22 Jul 2015 19:31:54 +0000 (+0000) Subject: tests/uid: import uid overflow check from tests/uid16 X-Git-Tag: v4.11~329 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04fcb999722927c0f43119fe2fbf3a02bc2275e5;p=strace tests/uid: import uid overflow check from tests/uid16 * tests/uid.c (main): Skip if the uid returned by getuid matches /proc/sys/kernel/overflowuid. --- diff --git a/tests/uid.c b/tests/uid.c index f316d805..bf4d8d22 100644 --- a/tests/uid.c +++ b/tests/uid.c @@ -4,6 +4,7 @@ #include #include #include +#include #include int @@ -24,6 +25,21 @@ main(void) # define __NR_getuid __NR_getxuid #endif uid = syscall(__NR_getuid); + + (void) close(0); + if (open("/proc/sys/kernel/overflowuid", O_RDONLY) == 0) { + /* we trust the kernel */ + char buf[sizeof(int)*3]; + int n = read(0, buf, sizeof(buf) - 1); + if (n) { + buf[n] = '\0'; + n = atoi(buf); + if (uid == n) + return 77; + } + (void) close(0); + } + assert(syscall(__NR_setuid, uid) == 0); { /*