subproc: save/restore errno when printing error message twice
authorRobert Swiecki <robert@swiecki.net>
Tue, 12 Mar 2019 16:07:24 +0000 (17:07 +0100)
committerRobert Swiecki <robert@swiecki.net>
Tue, 12 Mar 2019 16:07:24 +0000 (17:07 +0100)
config.proto
subproc.cc

index 90091be..8366704 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;
index aafb629..dbb21a7 100644 (file)
@@ -435,9 +435,11 @@ bool runChild(nsjconf_t* nsjconf, int fd_in, int fd_out, int fd_err) {
        close(child_fd);
        if (pid == -1) {
                if (flags & CLONE_NEWCGROUP) {
+                       auto saved_errno = errno;
                        PLOG_E(
                            "nsjail tried to use the CLONE_NEWCGROUP clone flag, which is "
                            "supported under kernel versions >= 4.6 only. Try disabling this flag");
+                       errno = saved_errno;
                }
                PLOG_E(
                    "clone(flags=%s) failed. You probably need root privileges if your system "