config: give ability to override argv[0]
authorRobert Swiecki <robert@swiecki.net>
Mon, 12 Jun 2017 00:14:18 +0000 (02:14 +0200)
committerRobert Swiecki <robert@swiecki.net>
Mon, 12 Jun 2017 00:14:18 +0000 (02:14 +0200)
config.c
config.proto

index 0fed705375b5e83e166be3cabace17564dab7822..ef2c0f84d1be984dacd052f081daa1acdd9b9d23 100644 (file)
--- a/config.c
+++ b/config.c
@@ -230,7 +230,11 @@ static bool configParseInternal(struct nsjconf_t *nsjconf, Nsjail__NsJailConfig
 
        if (njc->exec_bin) {
                char **argv = utilCalloc(sizeof(const char *) * (njc->exec_bin->n_arg + 2));
-               argv[0] = utilStrDup(njc->exec_bin->path);
+               if (njc->exec_bin->arg0) {
+                       argv[0] = utilStrDup(njc->exec_bin->arg0);
+               } else {
+                       argv[0] = utilStrDup(njc->exec_bin->path);
+               }
                for (size_t i = 0; i < njc->exec_bin->n_arg; i++) {
                        argv[i + 1] = utilStrDup(njc->exec_bin->arg[i]);
                }
index a73c47b57804510a20d7e7c10a46f4251cde8a0a..d5d9d6b03bbccf9223450493864781aa6d40e40e 100644 (file)
@@ -58,6 +58,8 @@ message Exe
     required string path = 1;
     /* This will be argv[1] and so on.. */
     repeated string arg = 2;
+    /* Override argv[0] */
+    optional string arg0 = 3;
 }
 message NsJailConfig
 {