From 74e88d92b4077911efd141eaffa20967373492aa Mon Sep 17 00:00:00 2001 From: Artur Cygan Date: Mon, 6 Jul 2020 14:38:11 +0200 Subject: [PATCH] Stringify CLI-passed paths --- user.cc | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/user.cc b/user.cc index 1b5c874..dc2d151 100644 --- a/user.cc +++ b/user.cc @@ -43,12 +43,20 @@ #include "subproc.h" #include "util.h" -#ifndef NEWUIDMAP_PATH -#define NEWUIDMAP_PATH "/usr/bin/newuidmap" +#define STR_(x) #x +#define STR(x) STR_(x) + +constexpr char kNewUidPath[] = +#ifdef NEWUIDMAP_PATH + STR(NEWUIDMAP_PATH); +#else + "/usr/bin/newuidmap"; #endif - -#ifndef NEWGIDMAP_PATH -#define NEWGIDMAP_PATH "/usr/bin/newgidmap" +constexpr char kNewGidPath[] = +#ifdef NEWGIDMAP_PATH + STR(NEWGIDMAP_PATH); +#else + "/usr/bin/newgidmap"; #endif namespace user { @@ -169,11 +177,11 @@ static bool gidMapSelf(nsjconf_t* nsjconf, pid_t pid) { return true; } -/* Use NEWGIDMAP_PATH for writing the gid map */ +/* Use newgidmap for writing the gid map */ static bool gidMapExternal(nsjconf_t* nsjconf, pid_t pid) { bool use = false; - std::vector argv = {NEWGIDMAP_PATH, std::to_string(pid)}; + std::vector argv = {kNewGidPath, std::to_string(pid)}; for (const auto& gid : nsjconf->gids) { if (!gid.is_newidmap) { continue; @@ -188,18 +196,18 @@ static bool gidMapExternal(nsjconf_t* nsjconf, pid_t pid) { return true; } if (subproc::systemExe(argv, environ) != 0) { - LOG_E("'%s' failed", NEWGIDMAP_PATH); + LOG_E("'%s' failed", kNewGidPath); return false; } return true; } -/* Use NEWUIDMAP_PATH for writing the uid map */ +/* Use newuidmap for writing the uid map */ static bool uidMapExternal(nsjconf_t* nsjconf, pid_t pid) { bool use = false; - std::vector argv = {NEWUIDMAP_PATH, std::to_string(pid)}; + std::vector argv = {kNewUidPath, std::to_string(pid)}; for (const auto& uid : nsjconf->uids) { if (!uid.is_newidmap) { continue; @@ -214,7 +222,7 @@ static bool uidMapExternal(nsjconf_t* nsjconf, pid_t pid) { return true; } if (subproc::systemExe(argv, environ) != 0) { - LOG_E("'%s' failed", NEWUIDMAP_PATH); + LOG_E("'%s' failed", kNewUidPath); return false; } -- 2.34.1