From e8a3a3ec374c4321cb00c323749d29f7ad60ff91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20Andr=C3=A9e?= Date: Thu, 31 Mar 2016 03:03:37 +0200 Subject: [PATCH] test: -erwx test against effetive uid/gid, not real MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- test.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test.c b/test.c index 3fe12c3..6045e4e 100644 --- a/test.c +++ b/test.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -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); }