summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-11-22 18:00:07 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-11-22 18:01:43 -0500
commitb63bd1090bf6ce79b6757c3f8f4172a367854577 (patch)
tree85a66b611c242d405fd5006003c78e2cf0d480b4 /src/shared
parent8ecec322fe6b34b64868d8cc3808b5613f09e8d3 (diff)
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
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/path-util.c6
-rw-r--r--src/shared/path-util.h2
2 files changed, 4 insertions, 4 deletions
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;
diff --git a/src/shared/path-util.h b/src/shared/path-util.h
index 8d171a57ec..bd0d32473f 100644
--- a/src/shared/path-util.h
+++ b/src/shared/path-util.h
@@ -55,7 +55,7 @@ int path_is_mount_point(const char *path, bool allow_symlink);
int path_is_read_only_fs(const char *path);
int path_is_os_tree(const char *path);
-int find_binary(const char *name, char **filename);
+int find_binary(const char *name, bool local, char **filename);
bool paths_check_timestamp(const char* const* paths, usec_t *paths_ts_usec, bool update);