From 606dd46346661dd7c4c023cdeb5230f5e224ce73 Mon Sep 17 00:00:00 2001 From: smitsohu Date: Mon, 24 Jan 2022 09:09:39 +0100 Subject: build option: add appimage support --- src/fbuilder/build_profile.c | 48 ++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 26 deletions(-) (limited to 'src/fbuilder/build_profile.c') diff --git a/src/fbuilder/build_profile.c b/src/fbuilder/build_profile.c index 2e6b46e77..3a7a12fb3 100644 --- a/src/fbuilder/build_profile.c +++ b/src/fbuilder/build_profile.c @@ -22,7 +22,6 @@ #include #define TRACE_OUTPUT "/tmp/firejail-trace.XXXXXX" -#define STRACE_OUTPUT "/tmp/firejail-strace.XXXXXX" void build_profile(int argc, char **argv, int index, FILE *fp) { // next index is the application name @@ -41,36 +40,33 @@ void build_profile(int argc, char **argv, int index, FILE *fp) { if(asprintf(&output,"--trace=%s",trace_output) == -1) errExit("asprintf"); - char *cmdlist[] = { - BINDIR "/firejail", - "--quiet", - "--noprofile", - "--caps.drop=all", - "--seccomp", - output, - "--shell=none", - }; - // calculate command length - unsigned len = (int) sizeof(cmdlist) / sizeof(char*) + argc - index + 1; - if (arg_debug) - printf("command len %d + %d + 1\n", (int) (sizeof(cmdlist) / sizeof(char*)), argc - index); - char *cmd[len]; - cmd[0] = cmdlist[0]; // explicit assignment to clean scan-build error + unsigned len = 64; // plenty of space for firejail command line + len += argc - index; // program command line + len += 1; // NULL // build command - unsigned i = 0; - for (i = 0; i < (int) sizeof(cmdlist) / sizeof(char*); i++) - cmd[i] = cmdlist[i]; - - int i2 = index; - for (; i < (len - 1); i++, i2++) - cmd[i] = argv[i2]; - assert(i < len); - cmd[i] = NULL; + char *cmd[len]; + unsigned curr_len = 0; + cmd[curr_len++] = BINDIR "/firejail"; + cmd[curr_len++] = "--quiet"; + cmd[curr_len++] = "--noprofile"; + cmd[curr_len++] = "--caps.drop=all"; + cmd[curr_len++] = "--seccomp"; + cmd[curr_len++] = "--shell=none"; + cmd[curr_len++] = output; + if (arg_appimage) + cmd[curr_len++] = "--appimage"; + + int i; + for (i = index; i < argc; i++) + cmd[curr_len++] = argv[i]; + + assert(curr_len < len); + cmd[curr_len] = NULL; if (arg_debug) { - for (i = 0; i < len; i++) + for (i = 0; cmd[i]; i++) printf("%s%s\n", (i)?"\t":"", cmd[i]); } -- cgit v1.2.3-54-g00ecf