From 3c7a1d75d4e4f5f0e7f76d4b60da76308323e668 Mon Sep 17 00:00:00 2001 From: Chris Down Date: Wed, 25 Sep 2019 17:09:38 +0100 Subject: [PATCH] util-lib: Don't propagate EACCES from find_binary PATH lookup to caller On one of my test machines, test-path-util was failing because the find_binary("xxxx-xxxx") was returning -EACCES instead of -ENOENT. This happens because the PATH entry on that host contains a directory which the user in question doesn't have access to. Typically applications ignore permission errors when searching through PATH, for example in bash: $ whoami cdown $ PATH=/root:/bin type sh sh is /bin/sh This behaviour is present on zsh and other shells as well, though. This patch brings our PATH search behaviour closer to other major Unix tools. (cherry picked from commit 4e1ddb661272ddb2f03d6046369c973657dfdd62) (cherry picked from commit 8282bc61df10dc1f2290c9c351d5ff6fdb157c24) Gbp-Pq: Name util-lib-Don-t-propagate-EACCES-from-find_binary-PATH-loo.patch --- src/basic/path-util.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/basic/path-util.c b/src/basic/path-util.c index 18c7dabb..b9544b4b 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -651,7 +651,9 @@ int find_binary(const char *name, char **ret) { return 0; } - last_error = -errno; + /* PATH entries which we don't have access to are ignored, as per tradition. */ + if (errno != EACCES) + last_error = -errno; } return last_error; -- 2.30.2