nsjail: envs to vector of strings
This commit is contained in:
parent
63eb13ecde
commit
9399373ee7
10
cmdline.cc
10
cmdline.cc
@ -392,7 +392,6 @@ std::unique_ptr<struct nsjconf_t> parseArgs(int argc, char* argv[]) {
|
||||
|
||||
TAILQ_INIT(&nsjconf->pids);
|
||||
TAILQ_INIT(&nsjconf->mountpts);
|
||||
TAILQ_INIT(&nsjconf->envs);
|
||||
TAILQ_INIT(&nsjconf->uids);
|
||||
TAILQ_INIT(&nsjconf->gids);
|
||||
|
||||
@ -594,12 +593,9 @@ std::unique_ptr<struct nsjconf_t> parseArgs(int argc, char* argv[]) {
|
||||
case 0x0607:
|
||||
nsjconf->use_execveat = true;
|
||||
break;
|
||||
case 'E': {
|
||||
struct charptr_t* p = reinterpret_cast<struct charptr_t*>(
|
||||
util::memAlloc(sizeof(struct charptr_t)));
|
||||
p->val = optarg;
|
||||
TAILQ_INSERT_TAIL(&nsjconf->envs, p, pointers);
|
||||
} break;
|
||||
case 'E':
|
||||
nsjconf->envs.push_back(optarg);
|
||||
break;
|
||||
case 'u': {
|
||||
char* i_id = optarg;
|
||||
char* o_id = cmdlineSplitStrByColon(i_id);
|
||||
|
@ -129,16 +129,11 @@ static bool configParseInternal(struct nsjconf_t* nsjconf, const nsjail::NsJailC
|
||||
|
||||
nsjconf->keep_env = njc.keep_env();
|
||||
for (ssize_t i = 0; i < njc.envar_size(); i++) {
|
||||
struct charptr_t* p =
|
||||
reinterpret_cast<charptr_t*>(util::memAlloc(sizeof(struct charptr_t)));
|
||||
p->val = njc.envar(i).c_str();
|
||||
TAILQ_INSERT_TAIL(&nsjconf->envs, p, pointers);
|
||||
nsjconf->envs.push_back(njc.envar(i));
|
||||
}
|
||||
|
||||
nsjconf->keep_caps = njc.keep_caps();
|
||||
for (ssize_t i = 0; i < njc.cap_size(); i++) {
|
||||
struct ints_t* f =
|
||||
reinterpret_cast<struct ints_t*>(util::memAlloc(sizeof(struct ints_t)));
|
||||
int cap = caps::nameToVal(njc.cap(i).c_str());
|
||||
if (cap == -1) {
|
||||
return false;
|
||||
|
16
nsjail.h
16
nsjail.h
@ -33,6 +33,7 @@
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#if !defined(TEMP_FAILURE_RETRY)
|
||||
@ -90,12 +91,6 @@ struct idmap_t {
|
||||
pointers;
|
||||
};
|
||||
|
||||
struct ints_t {
|
||||
int val;
|
||||
TAILQ_ENTRY(ints_t)
|
||||
pointers;
|
||||
};
|
||||
|
||||
enum ns_mode_t {
|
||||
MODE_LISTEN_TCP = 0,
|
||||
MODE_STANDALONE_ONCE,
|
||||
@ -103,12 +98,6 @@ enum ns_mode_t {
|
||||
MODE_STANDALONE_RERUN
|
||||
};
|
||||
|
||||
struct charptr_t {
|
||||
const char* val;
|
||||
TAILQ_ENTRY(charptr_t)
|
||||
pointers;
|
||||
};
|
||||
|
||||
enum llevel_t {
|
||||
DEBUG = 0,
|
||||
INFO,
|
||||
@ -188,12 +177,11 @@ struct nsjconf_t {
|
||||
uids;
|
||||
TAILQ_HEAD(gdmaplist, idmap_t)
|
||||
gids;
|
||||
TAILQ_HEAD(envlist, charptr_t)
|
||||
envs;
|
||||
TAILQ_HEAD(pidslist, pids_t)
|
||||
pids;
|
||||
TAILQ_HEAD(mountptslist, mounts_t)
|
||||
mountpts;
|
||||
std::vector<std::string> envs;
|
||||
std::vector<int> openfds;
|
||||
std::vector<int> caps;
|
||||
};
|
||||
|
@ -163,8 +163,9 @@ static int subprocNewProc(
|
||||
if (nsjconf->keep_env == false) {
|
||||
clearenv();
|
||||
}
|
||||
struct charptr_t* p;
|
||||
TAILQ_FOREACH(p, &nsjconf->envs, pointers) { putenv((char*)p->val); }
|
||||
for (const auto& env : nsjconf->envs) {
|
||||
putenv(const_cast<char*>(env.c_str()));
|
||||
}
|
||||
|
||||
char cs_addr[64];
|
||||
net::connToText(fd_in, true /* remote */, cs_addr, sizeof(cs_addr), NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user