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.c43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c
index e171919d1..3afecbe62 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -536,9 +536,44 @@ static void run_cmd_and_exit(int i, int argc, char **argv) {
536 // get file 536 // get file
537 pid_t pid; 537 pid_t pid;
538 if (read_pid(argv[i] + 6, &pid) == 0) 538 if (read_pid(argv[i] + 6, &pid) == 0)
539 sandboxfs(SANDBOX_FS_GET, pid, path); 539 sandboxfs(SANDBOX_FS_GET, pid, path, NULL);
540 else 540 else
541 sandboxfs_name(SANDBOX_FS_GET, argv[i] + 6, path); 541 sandboxfs_name(SANDBOX_FS_GET, argv[i] + 6, path, NULL);
542 exit(0);
543 }
544 else {
545 fprintf(stderr, "Error: --get feature is disabled in Firejail configuration file\n");
546 exit(1);
547 }
548 }
549 else if (strncmp(argv[i], "--put=", 6) == 0) {
550 if (checkcfg(CFG_FILE_TRANSFER)) {
551 logargs(argc, argv);
552
553 // verify path
554 if ((i + 3) != argc) {
555 fprintf(stderr, "Error: invalid --put option, 2 paths expected\n");
556 exit(1);
557 }
558 char *path1 = argv[i + 1];
559 invalid_filename(path1);
560 if (strstr(path1, "..")) {
561 fprintf(stderr, "Error: invalid file name %s\n", path1);
562 exit(1);
563 }
564 char *path2 = argv[i + 2];
565 invalid_filename(path2);
566 if (strstr(path2, "..")) {
567 fprintf(stderr, "Error: invalid file name %s\n", path2);
568 exit(1);
569 }
570
571 // get file
572 pid_t pid;
573 if (read_pid(argv[i] + 6, &pid) == 0)
574 sandboxfs(SANDBOX_FS_PUT, pid, path1, path2);
575 else
576 sandboxfs_name(SANDBOX_FS_PUT, argv[i] + 6, path1, path2);
542 exit(0); 577 exit(0);
543 } 578 }
544 else { 579 else {
@@ -565,9 +600,9 @@ static void run_cmd_and_exit(int i, int argc, char **argv) {
565 // list directory contents 600 // list directory contents
566 pid_t pid; 601 pid_t pid;
567 if (read_pid(argv[i] + 5, &pid) == 0) 602 if (read_pid(argv[i] + 5, &pid) == 0)
568 sandboxfs(SANDBOX_FS_LS, pid, path); 603 sandboxfs(SANDBOX_FS_LS, pid, path, NULL);
569 else 604 else
570 sandboxfs_name(SANDBOX_FS_LS, argv[i] + 5, path); 605 sandboxfs_name(SANDBOX_FS_LS, argv[i] + 5, path, NULL);
571 exit(0); 606 exit(0);
572 } 607 }
573 else { 608 else {