diff options
author | netblue30 <netblue30@yahoo.com> | 2015-11-19 07:23:17 -0500 |
---|---|---|
committer | netblue30 <netblue30@yahoo.com> | 2015-11-19 07:23:17 -0500 |
commit | f01daa0ecec8b847736288319e49810386f07b91 (patch) | |
tree | e2268e4590afd57c31323fd9bb8e722b90bab27c | |
parent | add log and dri to private-dev help and man pages (diff) | |
parent | Add '"' chars around every argument passed to bash (diff) | |
download | firejail-f01daa0ecec8b847736288319e49810386f07b91.tar.gz firejail-f01daa0ecec8b847736288319e49810386f07b91.tar.zst firejail-f01daa0ecec8b847736288319e49810386f07b91.zip |
Merge pull request #148 from brunonova/command-line-spaces
Add '"' chars around every argument passed to bash
-rw-r--r-- | src/firejail/main.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c index 3a2da0852..c55d87364 100644 --- a/src/firejail/main.c +++ b/src/firejail/main.c | |||
@@ -1188,11 +1188,12 @@ int main(int argc, char **argv) { | |||
1188 | } | 1188 | } |
1189 | else { | 1189 | else { |
1190 | // calculate the length of the command | 1190 | // calculate the length of the command |
1191 | // TODO: escape the '"' characters, and possibly others like '\' and '!' if they can cause problems | ||
1191 | int i; | 1192 | int i; |
1192 | int len = 0; | 1193 | int len = 0; |
1193 | int argcnt = argc - prog_index; | 1194 | int argcnt = argc - prog_index; |
1194 | for (i = 0; i < argcnt; i++) | 1195 | for (i = 0; i < argcnt; i++) |
1195 | len += strlen(argv[i + prog_index]) + 1; // + ' ' | 1196 | len += strlen(argv[i + prog_index]) + 3; // + ' ' + 2 '"' |
1196 | 1197 | ||
1197 | // build the string | 1198 | // build the string |
1198 | cfg.command_line = malloc(len + 1); // + '\0' | 1199 | cfg.command_line = malloc(len + 1); // + '\0' |
@@ -1200,7 +1201,7 @@ int main(int argc, char **argv) { | |||
1200 | errExit("malloc"); | 1201 | errExit("malloc"); |
1201 | char *ptr = cfg.command_line; | 1202 | char *ptr = cfg.command_line; |
1202 | for (i = 0; i < argcnt; i++) { | 1203 | for (i = 0; i < argcnt; i++) { |
1203 | sprintf(ptr, "%s ", argv[i + prog_index]); | 1204 | sprintf(ptr, "\"%s\" ", argv[i + prog_index]); |
1204 | ptr += strlen(ptr); | 1205 | ptr += strlen(ptr); |
1205 | } | 1206 | } |
1206 | } | 1207 | } |