nsjconf->iface_vs_gw = "0.0.0.0";
nsjconf->orig_uid = getuid();
nsjconf->num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+ nsjconf->seccomp_fprog.filter = NULL;
+ nsjconf->seccomp_fprog.len = 0;
nsjconf->openfds.push_back(STDIN_FILENO);
nsjconf->openfds.push_back(STDOUT_FILENO);
LOG_F("Couldn't prepare sandboxing policy");
}
+ int ret = 0;
if (nsjconf->mode == MODE_LISTEN_TCP) {
nsjailListenMode(nsjconf.get());
} else {
- return nsjailStandaloneMode(nsjconf.get());
+ ret = nsjailStandaloneMode(nsjconf.get());
}
- return 0;
+ sandbox::closePolicy(nsjconf.get());
+ return ret;
}
return true;
}
+void closePolicy(nsjconf_t* nsjconf) {
+ if (!nsjconf->seccomp_fprog.filter) {
+ return;
+ }
+ free(nsjconf->seccomp_fprog.filter);
+ nsjconf->seccomp_fprog.filter = nullptr;
+ nsjconf->seccomp_fprog.len = 0;
+}
+
} // namespace sandbox
bool applyPolicy(nsjconf_t* nsjconf);
bool preparePolicy(nsjconf_t* nsjconf);
+void closePolicy(nsjconf_t* nsjconf);
} // namespace sandbox