Skip to content

Commit

Permalink
nsjail: envs to vector of strings
Browse files Browse the repository at this point in the history
  • Loading branch information
robertswiecki committed Feb 9, 2018
1 parent 63eb13e commit 9399373
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 29 deletions.
10 changes: 3 additions & 7 deletions cmdline.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
Expand Down
7 changes: 1 addition & 6 deletions config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
16 changes: 2 additions & 14 deletions nsjail.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include <time.h>
#include <unistd.h>

#include <string>
#include <vector>

#if !defined(TEMP_FAILURE_RETRY)
Expand Down Expand Up @@ -90,25 +91,13 @@ 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,
MODE_STANDALONE_EXECVE,
MODE_STANDALONE_RERUN
};

struct charptr_t {
const char* val;
TAILQ_ENTRY(charptr_t)
pointers;
};

enum llevel_t {
DEBUG = 0,
INFO,
Expand Down Expand Up @@ -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;
};
Expand Down
5 changes: 3 additions & 2 deletions subproc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 9399373

Please sign in to comment.