aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar smitsohu <smitsohu@gmail.com>2019-09-17 14:41:49 +0200
committerLibravatar smitsohu <smitsohu@gmail.com>2019-09-17 14:41:49 +0200
commit50ebe3adca1132be2f311ecfed443cede9d5fcf2 (patch)
tree5e670b2eb7f518ddc3e07d9ccab1664ae4ba590c
parentmove to fd based trace file mount (diff)
downloadfirejail-50ebe3adca1132be2f311ecfed443cede9d5fcf2.tar.gz
firejail-50ebe3adca1132be2f311ecfed443cede9d5fcf2.tar.zst
firejail-50ebe3adca1132be2f311ecfed443cede9d5fcf2.zip
add trace file validation
-rw-r--r--src/firejail/main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c
index 4c6d20626..900e61226 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -1300,6 +1300,22 @@ int main(int argc, char **argv) {
1300 else if (strncmp(argv[i], "--trace=", 8) == 0) { 1300 else if (strncmp(argv[i], "--trace=", 8) == 0) {
1301 arg_trace = 1; 1301 arg_trace = 1;
1302 arg_tracefile = argv[i] + 8; 1302 arg_tracefile = argv[i] + 8;
1303 if (*arg_tracefile == '\0') {
1304 fprintf(stderr, "Error: invalid trace option\n");
1305 exit(1);
1306 }
1307 invalid_filename(arg_tracefile, 0); // no globbing
1308 if (strstr(arg_tracefile, "..")) {
1309 fprintf(stderr, "Error: invalid file name %s\n", arg_tracefile);
1310 exit(1);
1311 }
1312 // if the filename starts with ~, expand the home directory
1313 if (*arg_tracefile == '~') {
1314 char *tmp;
1315 if (asprintf(&tmp, "%s%s", cfg.homedir, arg_tracefile + 1) == -1)
1316 errExit("asprintf");
1317 arg_tracefile = tmp;
1318 }
1303 } 1319 }
1304 else if (strcmp(argv[i], "--tracelog") == 0) 1320 else if (strcmp(argv[i], "--tracelog") == 0)
1305 arg_tracelog = 1; 1321 arg_tracelog = 1;