}
{
struct idmap_t* p;
- TAILQ_FOREACH(p, &nsjconf->uids, pointers) {
+ for (const auto& uid : nsjconf->uids) {
LOG_I("Uid map: inside_uid:%lu outside_uid:%lu count:%zu newuidmap:%s",
- (unsigned long)p->inside_id, (unsigned long)p->outside_id, p->count,
- p->is_newidmap ? "true" : "false");
- if (p->outside_id == 0 && nsjconf->clone_newuser) {
+ (unsigned long)uid.inside_id, (unsigned long)uid.outside_id, uid.count,
+ uid.is_newidmap ? "true" : "false");
+ if (uid.outside_id == 0 && nsjconf->clone_newuser) {
LOG_W(
"Process will be UID/EUID=0 in the global user namespace, "
"and will have user "
"root-level access to files");
}
}
- TAILQ_FOREACH(p, &nsjconf->gids, pointers) {
+ for (const auto& gid : nsjconf->gids) {
LOG_I("Gid map: inside_gid:%lu outside_gid:%lu count:%zu newgidmap:%s",
- (unsigned long)p->inside_id, (unsigned long)p->outside_id, p->count,
- p->is_newidmap ? "true" : "false");
- if (p->outside_id == 0 && nsjconf->clone_newuser) {
+ (unsigned long)gid.inside_id, (unsigned long)gid.outside_id, gid.count,
+ gid.is_newidmap ? "true" : "false");
+ if (gid.outside_id == 0 && nsjconf->clone_newuser) {
LOG_W(
"Process will be GID/EGID=0 in the global user namespace, "
"and will have group "
TAILQ_INIT(&nsjconf->pids);
TAILQ_INIT(&nsjconf->mountpts);
- TAILQ_INIT(&nsjconf->uids);
- TAILQ_INIT(&nsjconf->gids);
static char cmdlineTmpfsSz[PATH_MAX] = "size=4194304";
}
}
- if (TAILQ_EMPTY(&nsjconf->uids)) {
- struct idmap_t* p =
- reinterpret_cast<struct idmap_t*>(util::memAlloc(sizeof(struct idmap_t)));
- p->inside_id = getuid();
- p->outside_id = getuid();
- p->count = 1U;
- p->is_newidmap = false;
- TAILQ_INSERT_HEAD(&nsjconf->uids, p, pointers);
+ if (nsjconf->uids.empty()) {
+ struct idmap_t uid;
+ uid.inside_id = getuid();
+ uid.outside_id = getuid();
+ uid.count = 1U;
+ uid.is_newidmap = false;
+ nsjconf->uids.push_back(uid);
}
- if (TAILQ_EMPTY(&nsjconf->gids)) {
- struct idmap_t* p =
- reinterpret_cast<struct idmap_t*>(util::memAlloc(sizeof(struct idmap_t)));
- p->inside_id = getgid();
- p->outside_id = getgid();
- p->count = 1U;
- p->is_newidmap = false;
- TAILQ_INSERT_HEAD(&nsjconf->gids, p, pointers);
+ if (nsjconf->gids.empty()) {
+ struct idmap_t gid;
+ gid.inside_id = getgid();
+ gid.outside_id = getgid();
+ gid.count = 1U;
+ gid.is_newidmap = false;
+ nsjconf->gids.push_back(gid);
}
if (log::initLogFile(nsjconf.get()) == false) {
char map[4096] = {[0] = '\0'};
struct idmap_t* p;
- TAILQ_FOREACH(p, &nsjconf->uids, pointers) {
- if (p->is_newidmap) {
+ for (const auto& uid : nsjconf->uids) {
+ if (uid.is_newidmap) {
continue;
}
- util::sSnPrintf(map, sizeof(map), "%lu %lu %zu\n", (unsigned long)p->inside_id,
- (unsigned long)p->outside_id, p->count);
+ util::sSnPrintf(map, sizeof(map), "%lu %lu %zu\n", (unsigned long)uid.inside_id,
+ (unsigned long)uid.outside_id, uid.count);
}
if (strlen(map) == 0) {
char map[4096] = {[0] = '\0'};
struct idmap_t* p;
- TAILQ_FOREACH(p, &nsjconf->gids, pointers) {
- if (p->is_newidmap) {
+ for (const auto& gid : nsjconf->gids) {
+ if (gid.is_newidmap) {
continue;
}
- util::sSnPrintf(map, sizeof(map), "%lu %lu %zu\n", (unsigned long)p->inside_id,
- (unsigned long)p->outside_id, p->count);
+ util::sSnPrintf(map, sizeof(map), "%lu %lu %zu\n", (unsigned long)gid.inside_id,
+ (unsigned long)gid.outside_id, gid.count);
}
if (strlen(map) == 0) {
struct idmap_t* p;
bool use = false;
- TAILQ_FOREACH(p, &nsjconf->gids, pointers) {
- if (p->is_newidmap == false) {
+ for (const auto& gid : nsjconf->gids) {
+ if (gid.is_newidmap == false) {
continue;
}
if ((idx + 4) >= ARRAYSIZE(argv)) {
}
use = true;
- snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)p->inside_id);
+ snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)gid.inside_id);
argv[idx] = parms[idx];
idx++;
- snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)p->outside_id);
+ snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)gid.outside_id);
argv[idx] = parms[idx];
idx++;
- snprintf(parms[idx], sizeof(parms[idx]), "%zu", p->count);
+ snprintf(parms[idx], sizeof(parms[idx]), "%zu", gid.count);
argv[idx] = parms[idx];
idx++;
}
bool use = false;
struct idmap_t* p;
- TAILQ_FOREACH(p, &nsjconf->uids, pointers) {
- if (p->is_newidmap == false) {
+ for (const auto& uid : nsjconf->uids) {
+ if (uid.is_newidmap == false) {
continue;
}
if ((idx + 4) >= ARRAYSIZE(argv)) {
}
use = true;
- snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)p->inside_id);
+ snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)uid.inside_id);
argv[idx] = parms[idx];
idx++;
- snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)p->outside_id);
+ snprintf(parms[idx], sizeof(parms[idx]), "%u", (unsigned)uid.outside_id);
argv[idx] = parms[idx];
idx++;
- snprintf(parms[idx], sizeof(parms[idx]), "%zu", p->count);
+ snprintf(parms[idx], sizeof(parms[idx]), "%zu", uid.count);
argv[idx] = parms[idx];
idx++;
}
return false;
}
- if (!setResGid(TAILQ_FIRST(&nsjconf->gids)->inside_id)) {
- PLOG_E("setresgid(%u)", TAILQ_FIRST(&nsjconf->gids)->inside_id);
+ if (!setResGid(nsjconf->gids[0].inside_id)) {
+ PLOG_E("setresgid(%u)", nsjconf->gids[0].inside_id);
return false;
}
- if (!setResUid(TAILQ_FIRST(&nsjconf->uids)->inside_id)) {
- PLOG_E("setresuid(%u)", TAILQ_FIRST(&nsjconf->uids)->inside_id);
+ if (!setResUid(nsjconf->uids[0].inside_id)) {
+ PLOG_E("setresuid(%u)", nsjconf->uids[0].inside_id);
return false;
}
}
}
- struct idmap_t* p =
- reinterpret_cast<struct idmap_t*>(util::memAlloc(sizeof(struct idmap_t)));
- p->inside_id = inside_id;
- p->outside_id = outside_id;
- p->count = cnt;
- p->is_newidmap = is_newidmap;
+ struct idmap_t id;
+ id.inside_id = inside_id;
+ id.outside_id = outside_id;
+ id.count = cnt;
+ id.is_newidmap = is_newidmap;
if (is_gid) {
- TAILQ_INSERT_TAIL(&nsjconf->gids, p, pointers);
+ nsjconf->gids.push_back(id);
} else {
- TAILQ_INSERT_TAIL(&nsjconf->uids, p, pointers);
+ nsjconf->uids.push_back(id);
}
return true;