From b63bd1090bf6ce79b6757c3f8f4172a367854577 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Sat, 22 Nov 2014 18:00:07 -0500 Subject: Do not check for existence of remote binaries systemd-run would fail when run with -M or -H and an absolute path, if this path did not exists locally. Allow it to continue, since we don't have a nice way of checking if the binary exists remotely. The case where -M or -H is used and a local path is unchanged, and we still iterate over $PATH to find the binary. We need to convert to an absolute path, and we don't have a nice mechanism to check remotely, so we assume that the binary will be located in the same place locally and remotely. http://lists.freedesktop.org/archives/systemd-devel/2014-November/025418.html --- src/shared/path-util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/shared/path-util.c') diff --git a/src/shared/path-util.c b/src/shared/path-util.c index 67566bc76b..be03695cf8 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -563,11 +563,11 @@ int path_is_os_tree(const char *path) { return r >= 0; } -int find_binary(const char *name, char **filename) { +int find_binary(const char *name, bool local, char **filename) { assert(name); if (is_path(name)) { - if (access(name, X_OK) < 0) + if (local && access(name, X_OK) < 0) return -errno; if (filename) { @@ -657,7 +657,7 @@ int fsck_exists(const char *fstype) { checker = strappenda("fsck.", fstype); - r = find_binary(checker, &p); + r = find_binary(checker, true, &p); if (r < 0) return r; -- cgit v1.2.3-54-g00ecf