nspawn: don't try to resolve passed binary before entering namespace
authorLennart Poettering <lennart@poettering.net>
Wed, 21 Oct 2015 23:33:06 +0000 (01:33 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 21 Oct 2015 23:59:25 +0000 (01:59 +0200)
Othewise we might follow the symlinks on the host, instead of the
container.

Fixes #1400

src/nspawn/nspawn.c

index 4093f58..99e24cf 100644 (file)
@@ -3148,10 +3148,9 @@ int main(int argc, char *argv[]) {
                 } else {
                         const char *p;
 
-                        p = strjoina(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);
+                        p = strjoina(arg_directory, "/usr/");
+                        if (laccess(p, F_OK) < 0) {
+                                log_error("Directory %s doesn't look like it has an OS tree. Refusing.", arg_directory);
                                 r = -EINVAL;
                                 goto finish;
                         }