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