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.c34
1 files changed, 19 insertions, 15 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c
index db9a9c8cb..3dcc5c62d 100644
--- a/src/firejail/main.c
+++ b/src/firejail/main.c
@@ -615,23 +615,27 @@ static void run_cmd_and_exit(int i, int argc, char **argv) {
615 } 615 }
616#endif 616#endif
617 else if (strncmp(argv[i], "--join=", 7) == 0) { 617 else if (strncmp(argv[i], "--join=", 7) == 0) {
618 logargs(argc, argv); 618 if (checkcfg(CFG_JOIN) || getuid() == 0) {
619 619 logargs(argc, argv);
620 if (arg_shell_none) { 620
621 if (argc <= (i+1)) { 621 if (arg_shell_none) {
622 fprintf(stderr, "Error: --shell=none set, but no command specified\n"); 622 if (argc <= (i+1)) {
623 exit(1); 623 fprintf(stderr, "Error: --shell=none set, but no command specified\n");
624 exit(1);
625 }
626 cfg.original_program_index = i + 1;
624 } 627 }
625 cfg.original_program_index = i + 1; 628
629 if (!cfg.shell && !arg_shell_none)
630 cfg.shell = guess_shell();
631
632 // join sandbox by pid or by name
633 pid_t pid = read_pid(argv[i] + 7);
634 join(pid, argc, argv, i + 1);
635 exit(0);
626 } 636 }
627 637 else
628 if (!cfg.shell && !arg_shell_none) 638 exit_err_feature("join");
629 cfg.shell = guess_shell();
630
631 // join sandbox by pid or by name
632 pid_t pid = read_pid(argv[i] + 7);
633 join(pid, argc, argv, i + 1);
634 exit(0);
635 639
636 } 640 }
637 else if (strncmp(argv[i], "--join-or-start=", 16) == 0) { 641 else if (strncmp(argv[i], "--join-or-start=", 16) == 0) {