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/test/test-path-util.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/test') diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 82090ce99f..4ebbfa9a76 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -85,29 +85,30 @@ static void test_path(void) { } } -static void test_find_binary(const char *self) { +static void test_find_binary(const char *self, bool local) { char *p; - assert_se(find_binary("/bin/sh", &p) == 0); + assert_se(find_binary("/bin/sh", local, &p) == 0); puts(p); assert_se(streq(p, "/bin/sh")); free(p); - assert_se(find_binary(self, &p) == 0); + assert_se(find_binary(self, local, &p) == 0); puts(p); assert_se(endswith(p, "/test-path-util")); assert_se(path_is_absolute(p)); free(p); - assert_se(find_binary("sh", &p) == 0); + assert_se(find_binary("sh", local, &p) == 0); puts(p); assert_se(endswith(p, "/sh")); assert_se(path_is_absolute(p)); free(p); - assert_se(find_binary("xxxx-xxxx", &p) == -ENOENT); + assert_se(find_binary("xxxx-xxxx", local, &p) == -ENOENT); - assert_se(find_binary("/some/dir/xxxx-xxxx", &p) == -ENOENT); + assert_se(find_binary("/some/dir/xxxx-xxxx", local, &p) == + (local ? -ENOENT : 0)); } static void test_prefixes(void) { @@ -263,7 +264,8 @@ static void test_path_startswith(void) { int main(int argc, char **argv) { test_path(); - test_find_binary(argv[0]); + test_find_binary(argv[0], true); + test_find_binary(argv[0], false); test_prefixes(); test_path_join(); test_fsck_exists(); -- cgit v1.2.3-54-g00ecf