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