mnt: use /run/usr/<uid> first when mounting dirs
authorRobert Swiecki <robert@swiecki.net>
Mon, 18 Mar 2019 15:37:04 +0000 (16:37 +0100)
committerRobert Swiecki <robert@swiecki.net>
Mon, 18 Mar 2019 15:37:04 +0000 (16:37 +0100)
config.proto
mnt.cc

index 836670469827548b4657bde018b31bc145679baa..90091be92fa2bbb40c8b2b3fdf2533ee0eea0d84 100644 (file)
@@ -4,14 +4,14 @@ package nsjail;
 
 enum Mode {
     LISTEN = 0; /* Listening on a TCP port */
-    ONCE = 1;  /* Running the command once only */
-    RERUN = 2; /* Re-executing the command (forever) */
+    ONCE = 1;   /* Running the command once only */
+    RERUN = 2;  /* Re-executing the command (forever) */
     EXECVE = 3; /* Executing command w/o the supervisor */
 }
 /* Should be self explanatory */
 enum LogLevel {
-    DEBUG = 0;  /* Equivalent to the '-v' cmd-line option */
-    INFO = 1;   /* Default level */
+    DEBUG = 0;   /* Equivalent to the '-v' cmd-line option */
+    INFO = 1;    /* Default level */
     WARNING = 2; /* Equivalent to the '-q' cmd-line option */
     ERROR = 3;
     FATAL = 4;
diff --git a/mnt.cc b/mnt.cc
index f6aa4127fb64962dd1c156a8c8ef1869158e6aaa..81b7eac071909f1922a9bfe2a36574c0bf581957 100644 (file)
--- a/mnt.cc
+++ b/mnt.cc
@@ -282,6 +282,15 @@ static bool mkdirAndTest(const std::string& dir) {
 static std::unique_ptr<std::string> getDir(nsjconf_t* nsjconf, const char* name) {
        std::unique_ptr<std::string> dir(new std::string);
 
+       dir->assign("/run/user/")
+           .append(std::to_string(nsjconf->orig_uid))
+           .append("/nsjail.")
+           .append(std::to_string(nsjconf->orig_uid))
+           .append(".")
+           .append(name);
+       if (mkdirAndTest(*dir)) {
+               return dir;
+       }
        dir->assign("/run/user/")
            .append("/nsjail.")
            .append(std::to_string(nsjconf->orig_uid))