nsjail: better return values
authorRobert Swiecki <robert@swiecki.net>
Sun, 27 May 2018 23:40:02 +0000 (01:40 +0200)
committerRobert Swiecki <robert@swiecki.net>
Sun, 27 May 2018 23:40:02 +0000 (01:40 +0200)
cmdline.cc
nsjail.cc
subproc.cc

index 6f5af8d9c3d6919b318890aeff665a116178b34c..81930e381d7e56e11c6b943d2e050c08e2bc946e 100644 (file)
@@ -227,7 +227,8 @@ void logParams(nsjconf_t* nsjconf) {
 
        LOG_I(
            "Jail parameters: hostname:'%s', chroot:'%s', process:'%s', bind:[%s]:%d, "
-           "max_conns_per_ip:%u, time_limit:%" PRId64 " , personality:%#lx, daemonize:%s, clone_newnet:%s, "
+           "max_conns_per_ip:%u, time_limit:%" PRId64
+           " , personality:%#lx, daemonize:%s, clone_newnet:%s, "
            "clone_newuser:%s, clone_newns:%s, clone_newpid:%s, clone_newipc:%s, clonew_newuts:%s, "
            "clone_newcgroup:%s, keep_caps:%s, disable_no_new_privs:%s, max_cpus:%zu",
            nsjconf->hostname.c_str(), nsjconf->chroot.c_str(),
index c1dd2f945a336b2698cf44616b33d7868782f63b..1e59b89c61d2de44dc85c6f23a037bb0a1600601 100644 (file)
--- a/nsjail.cc
+++ b/nsjail.cc
@@ -116,14 +116,14 @@ static bool setTimer(nsjconf_t* nsjconf) {
 static int listenMode(nsjconf_t* nsjconf) {
        int listenfd = net::getRecvSocket(nsjconf->bindhost.c_str(), nsjconf->port);
        if (listenfd == -1) {
-               return 0;
+               return EXIT_FAILURE;
        }
        for (;;) {
                if (sigFatal > 0) {
                        subproc::killAll(nsjconf);
                        logs::logStop(sigFatal);
                        close(listenfd);
-                       return 0;
+                       return EXIT_SUCCESS;
                }
                if (showProc) {
                        showProc = false;
@@ -157,7 +157,7 @@ static int standaloneMode(nsjconf_t* nsjconf) {
                if (sigFatal > 0) {
                        subproc::killAll(nsjconf);
                        logs::logStop(sigFatal);
-                       return -1;
+                       return (128 + sigFatal);
                }
 
                pause();
index 3b969cbb757cb50a06dd642a96aaf8b1e1b58b73..e49156d6e20e6e991d61029c393dbdda192a5ac5 100644 (file)
@@ -235,8 +235,8 @@ void displayProc(nsjconf_t* nsjconf) {
        for (const auto& pid : nsjconf->pids) {
                time_t diff = now - pid.start;
                uint64_t left = nsjconf->tlimit ? nsjconf->tlimit - (uint64_t)diff : 0;
-               LOG_I("PID: %d, Remote host: %s, Run time: %ld sec. (time left: %" PRId64 " sec.)", pid.pid,
-                   pid.remote_txt.c_str(), (long)diff, left);
+               LOG_I("PID: %d, Remote host: %s, Run time: %ld sec. (time left: %" PRId64 " sec.)",
+                   pid.pid, pid.remote_txt.c_str(), (long)diff, left);
        }
 }
 
@@ -344,8 +344,9 @@ int reapProc(nsjconf_t* nsjconf) {
                pid_t pid = p.pid;
                time_t diff = now - p.start;
                if ((uint64_t)diff >= nsjconf->tlimit) {
-                       LOG_I("PID: %d run time >= time limit (%ld >= %" PRId64 ") (%s). Killing it", pid,
-                           (long)diff, (long)nsjconf->tlimit, p.remote_txt.c_str());
+                       LOG_I("PID: %d run time >= time limit (%ld >= %" PRId64
+                             ") (%s). Killing it",
+                           pid, (long)diff, (long)nsjconf->tlimit, p.remote_txt.c_str());
                        /*
                         * Probably a kernel bug - some processes cannot be killed with KILL if
                         * they're namespaced, and in a stopped state