f6cbdf
commit abc09f23e1ad55a07beb827aef969acfe6c496ef
f6cbdf
Author: Mark Wielaard <mark@klomp.org>
f6cbdf
Date:   Mon May 20 13:08:41 2019 +0200
f6cbdf
f6cbdf
    Make memcheck/tests/x86-linux/scalar test work under root.
f6cbdf
    
f6cbdf
    Running the testsuite as root isn't really recommended.
f6cbdf
    But lets not make tests fail unnecessarily when running as root.
f6cbdf
    Similar to the arm64-linux/scalar fixes. Plus 32bit variants that
f6cbdf
    don't exist on arm64.
f6cbdf
    
f6cbdf
    Pass really invalid arguments to setuid[32], setgid[32], acct, fchown[32].
f6cbdf
    Make setresgid[32], setresuid[32], setregid[32], setreuid[32] always succeed.
f6cbdf
f6cbdf
diff --git a/memcheck/tests/x86-linux/scalar.c b/memcheck/tests/x86-linux/scalar.c
f6cbdf
index 213a5ad..52f0d4e 100644
f6cbdf
--- a/memcheck/tests/x86-linux/scalar.c
f6cbdf
+++ b/memcheck/tests/x86-linux/scalar.c
f6cbdf
@@ -145,7 +145,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setuid 23
f6cbdf
    GO(__NR_setuid, "1s 0m");
f6cbdf
-   SY(__NR_setuid, x0); FAIL;
f6cbdf
+   SY(__NR_setuid, x0-1); FAIL;
f6cbdf
 
f6cbdf
    // __NR_getuid 24
f6cbdf
    GO(__NR_getuid, "0s 0m");
f6cbdf
@@ -238,7 +238,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setgid 46
f6cbdf
    GO(__NR_setgid, "1s 0m");
f6cbdf
-   SY(__NR_setgid, x0); FAIL;
f6cbdf
+   SY(__NR_setgid, x0-1); FAIL;
f6cbdf
 
f6cbdf
    // __NR_getgid 47
f6cbdf
    GO(__NR_getgid, "0s 0m");
f6cbdf
@@ -258,7 +258,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_acct 51
f6cbdf
    GO(__NR_acct, "1s 1m");
f6cbdf
-   SY(__NR_acct, x0); FAIL;
f6cbdf
+   SY(__NR_acct, x0-1); FAIL;
f6cbdf
 
f6cbdf
    // __NR_umount2 52
f6cbdf
    GO(__NR_umount2, "2s 1m");
f6cbdf
@@ -349,11 +349,11 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setreuid 70
f6cbdf
    GO(__NR_setreuid, "2s 0m");
f6cbdf
-   SY(__NR_setreuid, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setreuid, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_setregid 71
f6cbdf
    GO(__NR_setregid, "2s 0m");
f6cbdf
-   SY(__NR_setregid, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setregid, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_sigsuspend 72
f6cbdf
    // XXX: how do you use this function?
f6cbdf
@@ -456,7 +456,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_fchown 95
f6cbdf
    GO(__NR_fchown, "3s 0m");
f6cbdf
-   SY(__NR_fchown, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_fchown, x0-1, x0, x0); FAIL;
f6cbdf
 
f6cbdf
    // __NR_getpriority 96
f6cbdf
    GO(__NR_getpriority, "2s 0m");
f6cbdf
@@ -742,7 +742,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setresuid 164
f6cbdf
    GO(__NR_setresuid, "3s 0m");
f6cbdf
-   SY(__NR_setresuid, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setresuid, x0-1, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_getresuid 165
f6cbdf
    GO(__NR_getresuid, "3s 3m");
f6cbdf
@@ -766,7 +766,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setresgid 170
f6cbdf
    GO(__NR_setresgid, "3s 0m");
f6cbdf
-   SY(__NR_setresgid, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setresgid, x0-1, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_getresgid 171
f6cbdf
    GO(__NR_getresgid, "3s 3m");
f6cbdf
@@ -923,11 +923,11 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setreuid32 203
f6cbdf
    GO(__NR_setreuid32, "2s 0m");
f6cbdf
-   SY(__NR_setreuid32, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setreuid32, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_setregid32 204
f6cbdf
    GO(__NR_setregid32, "2s 0m");
f6cbdf
-   SY(__NR_setregid32, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setregid32, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_getgroups32 205
f6cbdf
    GO(__NR_getgroups32, "2s 1m");
f6cbdf
@@ -939,11 +939,11 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_fchown32 207
f6cbdf
    GO(__NR_fchown32, "3s 0m");
f6cbdf
-   SY(__NR_fchown32, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_fchown32, x0-1, x0, x0); FAIL;
f6cbdf
 
f6cbdf
    // __NR_setresuid32 208
f6cbdf
    GO(__NR_setresuid32, "3s 0m");
f6cbdf
-   SY(__NR_setresuid32, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setresuid32, x0-1, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_getresuid32 209
f6cbdf
    GO(__NR_getresuid32, "3s 3m");
f6cbdf
@@ -951,7 +951,7 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setresgid32 210
f6cbdf
    GO(__NR_setresgid32, "3s 0m");
f6cbdf
-   SY(__NR_setresgid32, x0, x0, x0); FAIL;
f6cbdf
+   SY(__NR_setresgid32, x0-1, x0-1, x0-1); SUCC;
f6cbdf
 
f6cbdf
    // __NR_getresgid32 211
f6cbdf
    GO(__NR_getresgid32, "3s 3m");
f6cbdf
@@ -963,11 +963,11 @@ int main(void)
f6cbdf
 
f6cbdf
    // __NR_setuid32 213
f6cbdf
    GO(__NR_setuid32, "1s 0m");
f6cbdf
-   SY(__NR_setuid32, x0); FAIL;
f6cbdf
+   SY(__NR_setuid32, x0-1); FAIL;
f6cbdf
 
f6cbdf
    // __NR_setgid32 214
f6cbdf
    GO(__NR_setgid32, "1s 0m");
f6cbdf
-   SY(__NR_setgid32, x0); FAIL;
f6cbdf
+   SY(__NR_setgid32, x0-1); FAIL;
f6cbdf
 
f6cbdf
    // __NR_setfsuid32 215
f6cbdf
    GO(__NR_setfsuid32, "1s 0m");