struct nsjconf_t nsjconf;
if (!cmdlineParse(argc, argv, &nsjconf)) {
LOG_E("Couldn't parse cmdline options");
- exit(1);
+ exit(0xff);
}
if (nsjconf.clone_newuser == false && geteuid() != 0) {
LOG_W("--disable_clone_newuser requires root() privs");
}
cmdlineLogParams(&nsjconf);
if (nsjailSetSigHandlers() == false) {
- exit(1);
+ exit(0xff);
}
if (nsjailSetTimer(&nsjconf) == false) {
- exit(1);
+ exit(0xff);
}
if (nsjconf.mode == MODE_LISTEN_TCP) {
static int subprocNewProc(struct nsjconf_t *nsjconf, int fd_in, int fd_out, int fd_err, int pipefd)
{
if (containSetupFD(nsjconf, fd_in, fd_out, fd_err) == false) {
- exit(1);
+ exit(0xff);
}
if (pipefd == -1) {
if (userInitNsFromParent(nsjconf, getpid()) == false) {
LOG_E("Couldn't initialize net user namespace");
- exit(1);
+ exit(0xff);
}
if (cgroupInitNsFromParent(nsjconf, getpid()) == false) {
LOG_E("Couldn't initialize net user namespace");
- exit(1);
+ exit(0xff);
}
} else {
char doneChar;
if (utilReadFromFd(pipefd, &doneChar, sizeof(doneChar)) != sizeof(doneChar)) {
- exit(1);
+ exit(0xff);
}
if (doneChar != subprocDoneChar) {
- exit(1);
+ exit(0xff);
}
}
if (containContain(nsjconf) == false) {
- exit(1);
+ exit(0xff);
}
if (nsjconf->keep_env == false) {
clearenv();
/* Should be the last one in the sequence */
if (sandboxApply(nsjconf) == false) {
- exit(1);
+ exit(0xff);
}
execv(nsjconf->exec_file, &nsjconf->argv[0]);
PLOG_E("execve('%s') failed", nsjconf->exec_file);
- _exit(1);
+ _exit(0xff);
}
static void subprocAdd(struct nsjconf_t *nsjconf, pid_t pid, int sock)
}
if (cgroupInitNsFromParent(nsjconf, pid) == false) {
LOG_E("Couldn't initialize cgroup user namespace");
- exit(1);
+ exit(0xff);
}
if (userInitNsFromParent(nsjconf, pid) == false) {
LOG_E("Couldn't initialize user namespaces for pid %d", pid);
LOG_D("Entering namespace with flags:%s", subprocCloneFlagsToStr(flags));
if (unshare(flags) == -1) {
PLOG_E("unshare(%#lx)", flags);
- _exit(EXIT_FAILURE);
+ _exit(0xff);
}
subprocNewProc(nsjconf, fd_in, fd_out, fd_err, -1);
}