X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnspawn%2Fnspawn.c;h=2a0edf6abca216381ddf932ea46978bc3f2d6b30;hb=6b9132a9c40355356b4d4f5b20b6338c0eb74dfa;hp=3a6d428cd5e682231079e1a8001d067e45a1ced8;hpb=9fccdb0f64d12bc09a71442dd0af2248c1aa3e89;p=elogind.git diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 3a6d428cd..2a0edf6ab 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1555,9 +1555,21 @@ int main(int argc, char *argv[]) { goto finish; } - if (arg_boot && path_is_os_tree(arg_directory) <= 0) { - log_error("Directory %s doesn't look like an OS root directory (/etc/os-release is missing). Refusing.", arg_directory); - goto finish; + if (arg_boot) { + if (path_is_os_tree(arg_directory) <= 0) { + log_error("Directory %s doesn't look like an OS root directory (/etc/os-release is missing). Refusing.", arg_directory); + goto finish; + } + } else { + const char *p; + + p = strappenda(arg_directory, + argc > optind && path_is_absolute(argv[optind]) ? argv[optind] : "/usr/bin/"); + if (access(p, F_OK) < 0) { + log_error("Directory %s lacks the binary to execute or doesn't look like a binary tree. Refusing.", arg_directory); + goto finish; + + } } log_close();