diff options
Diffstat (limited to 'src/firejail/main.c')
-rw-r--r-- | src/firejail/main.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/firejail/main.c b/src/firejail/main.c index 925cd3022..68606a313 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], "--ls=", 5) == 0) { | ||
430 | logargs(argc, argv); | ||
431 | |||
432 | // verify path | ||
433 | if ((i + 2) != argc) { | ||
434 | fprintf(stderr, "Error: invalid --ls 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 | // list directory contents | ||
445 | pid_t pid; | ||
446 | if (read_pid(argv[i] + 5, &pid) == 0) | ||
447 | ls(pid, path); | ||
448 | else | ||
449 | ls_name(argv[i] + 5, path); | ||
450 | exit(0); | ||
451 | } | ||
429 | else if (strncmp(argv[i], "--join=", 7) == 0) { | 452 | else if (strncmp(argv[i], "--join=", 7) == 0) { |
430 | logargs(argc, argv); | 453 | logargs(argc, argv); |
431 | 454 | ||