X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftest%2Ftest-ns.c;h=7cd7b77153f484e580e032ed999526e03825eff5;hb=eb5800026d5a6754514fb8f8a8561b49974fc879;hp=102b005880d57a7069513d71d2705a3cfd53cce0;hpb=379079ba6b06e82de9a8f0025456308a34b4b115;p=elogind.git diff --git a/src/test/test-ns.c b/src/test/test-ns.c index 102b00588..7cd7b7715 100644 --- a/src/test/test-ns.c +++ b/src/test/test-ns.c @@ -26,6 +26,7 @@ #include #include "namespace.h" +#include "execute.h" #include "log.h" int main(int argc, char *argv[]) { @@ -34,7 +35,7 @@ int main(int argc, char *argv[]) { NULL }; - const char * const readable[] = { + const char * const readonly[] = { "/", "/usr", "/boot", @@ -47,14 +48,29 @@ int main(int argc, char *argv[]) { }; int r; + char tmp_dir[] = "/tmp/systemd-private-XXXXXX", + var_tmp_dir[] = "/var/tmp/systemd-private-XXXXXX"; - if ((r = setup_namespace((char**) writable, (char**) readable, (char**) inaccessible, true, MS_SHARED)) < 0) { - log_error("Failed to setup namespace: %s", strerror(-r)); + assert_se(mkdtemp(tmp_dir)); + assert_se(mkdtemp(var_tmp_dir)); + + r = setup_namespace((char **) writable, + (char **) readonly, + (char **) inaccessible, + tmp_dir, + var_tmp_dir, + NULL, + true, + PROTECT_HOME_NO, + PROTECT_SYSTEM_NO, + 0); + if (r < 0) { + log_error_errno(r, "Failed to setup namespace: %m"); return 1; } execl("/bin/sh", "/bin/sh", NULL); - log_error("execl(): %m"); + log_error_errno(errno, "execl(): %m"); return 1; }