summary refs log tree commit diff
path: root/bin/cash
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2019-01-10 20:01:33 -0500
committerJune McEnroe <june@causal.agency>2019-01-10 20:01:33 -0500
commitf9bd24dc9aff9c68a0892da2c1ca337a6eddd9c3 (patch)
treea3b8336c9d1f3e694e3509003c23ac326a8bb888 /bin/cash
parentReplace st_mtim with st_mtimespec (diff)
downloadsrc-f9bd24dc9aff9c68a0892da2c1ca337a6eddd9c3.tar.gz
src-f9bd24dc9aff9c68a0892da2c1ca337a6eddd9c3.zip
Replace eaccess with faccessat
Diffstat (limited to '')
-rw-r--r--bin/cash/exec.c2
-rw-r--r--bin/cash/test.c9
2 files changed, 6 insertions, 5 deletions
diff --git a/bin/cash/exec.c b/bin/cash/exec.c
index c376dc51..5026e644 100644
--- a/bin/cash/exec.c
+++ b/bin/cash/exec.c
@@ -725,7 +725,7 @@ typecmd_impl(int argc, char **argv, int cmd, const char *path)
 						" a tracked alias for" : "",
 					    name);
 			} else {
-				if (eaccess(argv[i], X_OK) == 0) {
+				if (faccessat(AT_FDCWD, argv[i], X_OK, AT_EACCESS) == 0) {
 					if (cmd == TYPECMD_SMALLV)
 						out1fmt("%s\n", argv[i]);
 					else
diff --git a/bin/cash/test.c b/bin/cash/test.c
index e74c4f4c..a153cdb3 100644
--- a/bin/cash/test.c
+++ b/bin/cash/test.c
@@ -23,6 +23,7 @@ __FBSDID("$FreeBSD: releng/12.0/bin/test/test.c 298232 2016-04-19 00:38:07Z arau
 #include <ctype.h>
 #include <err.h>
 #include <errno.h>
+#include <fcntl.h>
 #include <inttypes.h>
 #include <limits.h>
 #include <stdarg.h>
@@ -375,18 +376,18 @@ filstat(char *nm, enum token mode)
 
 	switch (mode) {
 	case FILRD:
-		return (eaccess(nm, R_OK) == 0);
+		return (faccessat(AT_FDCWD, nm, R_OK, AT_EACCESS) == 0);
 	case FILWR:
-		return (eaccess(nm, W_OK) == 0);
+		return (faccessat(AT_FDCWD, nm, W_OK, AT_EACCESS) == 0);
 	case FILEX:
 		/* XXX work around eaccess(2) false positives for superuser */
-		if (eaccess(nm, X_OK) != 0)
+		if (faccessat(AT_FDCWD, nm, X_OK, AT_EACCESS) != 0)
 			return 0;
 		if (S_ISDIR(s.st_mode) || geteuid() != 0)
 			return 1;
 		return (s.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)) != 0;
 	case FILEXIST:
-		return (eaccess(nm, F_OK) == 0);
+		return (faccessat(AT_FDCWD, nm, F_OK, AT_EACCESS) == 0);
 	case FILREG:
 		return S_ISREG(s.st_mode);
 	case FILDIR: