aboutsummaryrefslogtreecommitdiffstats
path: root/src/firejail/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/firejail/main.c')
-rw-r--r--src/firejail/main.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c
index eebb04fcc..2c6b5a5e1 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -426,6 +426,29 @@ static void run_cmd_and_exit(int i, int argc, char **argv) {
426 exit(0); 426 exit(0);
427 } 427 }
428#endif 428#endif
429 else if (strncmp(argv[i], "--get=", 6) == 0) {
430 logargs(argc, argv);
431
432 // verify path
433 if ((i + 2) != argc) {
434 fprintf(stderr, "Error: invalid --get option, path expected\n");
435 exit(1);
436 }
437 char *path = argv[i + 1];
438 invalid_filename(path);
439 if (strstr(path, "..")) {
440 fprintf(stderr, "Error: invalid file name %s\n", path);
441 exit(1);
442 }
443
444 // get file
445 pid_t pid;
446 if (read_pid(argv[i] + 6, &pid) == 0)
447 sandboxfs(SANDBOX_FS_GET, pid, path);
448 else
449 sandboxfs_name(SANDBOX_FS_GET, argv[i] + 6, path);
450 exit(0);
451 }
429 else if (strncmp(argv[i], "--ls=", 5) == 0) { 452 else if (strncmp(argv[i], "--ls=", 5) == 0) {
430 logargs(argc, argv); 453 logargs(argc, argv);
431 454
@@ -444,9 +467,9 @@ static void run_cmd_and_exit(int i, int argc, char **argv) {
444 // list directory contents 467 // list directory contents
445 pid_t pid; 468 pid_t pid;
446 if (read_pid(argv[i] + 5, &pid) == 0) 469 if (read_pid(argv[i] + 5, &pid) == 0)
447 ls(pid, path); 470 sandboxfs(SANDBOX_FS_LS, pid, path);
448 else 471 else
449 ls_name(argv[i] + 5, path); 472 sandboxfs_name(SANDBOX_FS_LS, argv[i] + 5, path);
450 exit(0); 473 exit(0);
451 } 474 }
452 else if (strncmp(argv[i], "--join=", 7) == 0) { 475 else if (strncmp(argv[i], "--join=", 7) == 0) {