commit e8a3a3ec374c4321cb00c323749d29f7ad60ff91
Author:     Mattias Andrée <[email protected]>
AuthorDate: Thu Mar 31 03:03:37 2016 +0200
Commit:     FRIGN <[email protected]>
CommitDate: Wed Oct 5 18:48:10 2016 +0200

    test: -erwx test against effetive uid/gid, not real
    
    Signed-off-by: Mattias Andrée <[email protected]>

diff --git a/test.c b/test.c
index 3fe12c3..6045e4e 100644
--- a/test.c
+++ b/test.c
@@ -2,6 +2,7 @@
 #include <sys/stat.h>
 
 #include <ctype.h>
+#include <fcntl.h>
 #include <string.h>
 #include <unistd.h>
 
@@ -71,10 +72,10 @@ static int unary_u(char *s) { struct stat buf; if ( stat(s, 
&buf)) return 0; ret
 static int unary_n(char *s) { return  *s; }
 static int unary_z(char *s) { return !*s; }
 
-static int unary_e(char *s) { return !access(s, F_OK); }
-static int unary_r(char *s) { return !access(s, R_OK); }
-static int unary_w(char *s) { return !access(s, W_OK); }
-static int unary_x(char *s) { return !access(s, X_OK); }
+static int unary_e(char *s) { return !faccessat(AT_FDCWD, s, F_OK, 
AT_EACCESS); }
+static int unary_r(char *s) { return !faccessat(AT_FDCWD, s, R_OK, 
AT_EACCESS); }
+static int unary_w(char *s) { return !faccessat(AT_FDCWD, s, W_OK, 
AT_EACCESS); }
+static int unary_x(char *s) { return !faccessat(AT_FDCWD, s, X_OK, 
AT_EACCESS); }
 
 static int unary_t(char *s) { int fd = enstrtonum(2, s, 0, INT_MAX); return 
isatty(fd); }
 

Reply via email to