diff options
author | netblue30 <netblue30@yahoo.com> | 2017-08-15 19:09:11 -0400 |
---|---|---|
committer | netblue30 <netblue30@yahoo.com> | 2017-08-15 19:09:11 -0400 |
commit | 57d4877082cb4eb2d193e68694aef139e082a68a (patch) | |
tree | dcbd497e38c929143229e2582514d64413d1c04a /src | |
parent | Fix mpv running with youtube-dl on Debian systems (diff) | |
download | firejail-57d4877082cb4eb2d193e68694aef139e082a68a.tar.gz firejail-57d4877082cb4eb2d193e68694aef139e082a68a.tar.zst firejail-57d4877082cb4eb2d193e68694aef139e082a68a.zip |
fix x11 display reporting in firemon and firetools for sessions joining an existing x11 sandbox
Diffstat (limited to 'src')
-rw-r--r-- | src/firejail/firejail.h | 1 | ||||
-rw-r--r-- | src/firejail/join.c | 5 | ||||
-rw-r--r-- | src/firejail/main.c | 3 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/firejail/firejail.h b/src/firejail/firejail.h index b31d1365c..690f76e05 100644 --- a/src/firejail/firejail.h +++ b/src/firejail/firejail.h | |||
@@ -376,6 +376,7 @@ extern char *fullargv[MAX_ARGS]; | |||
376 | extern int fullargc; | 376 | extern int fullargc; |
377 | 377 | ||
378 | // main.c | 378 | // main.c |
379 | void set_x11_file(pid_t pid, int display); | ||
379 | void check_user_namespace(void); | 380 | void check_user_namespace(void); |
380 | char *guess_shell(void); | 381 | char *guess_shell(void); |
381 | 382 | ||
diff --git a/src/firejail/join.c b/src/firejail/join.c index dd7b2e9bb..14e3ae920 100644 --- a/src/firejail/join.c +++ b/src/firejail/join.c | |||
@@ -61,6 +61,11 @@ static void extract_x11_display(pid_t pid) { | |||
61 | fprintf(stderr, "Error: invalid X11 display range\n"); | 61 | fprintf(stderr, "Error: invalid X11 display range\n"); |
62 | return; | 62 | return; |
63 | } | 63 | } |
64 | |||
65 | // store the display number for join process in /run/firejail/x11 | ||
66 | EUID_ROOT(); | ||
67 | set_x11_file(getpid(), display); | ||
68 | EUID_USER(); | ||
64 | } | 69 | } |
65 | 70 | ||
66 | static void extract_command(int argc, char **argv, int index) { | 71 | static void extract_command(int argc, char **argv, int index) { |
diff --git a/src/firejail/main.c b/src/firejail/main.c index 9726c0b8a..71a37beb7 100644 --- a/src/firejail/main.c +++ b/src/firejail/main.c | |||
@@ -129,7 +129,6 @@ unsigned long long start_timestamp; | |||
129 | 129 | ||
130 | static void set_name_file(pid_t pid); | 130 | static void set_name_file(pid_t pid); |
131 | static void delete_name_file(pid_t pid); | 131 | static void delete_name_file(pid_t pid); |
132 | static void set_x11_file(pid_t pid, int display); | ||
133 | static void delete_x11_file(pid_t pid); | 132 | static void delete_x11_file(pid_t pid); |
134 | 133 | ||
135 | void clear_run_files(pid_t pid) { | 134 | void clear_run_files(pid_t pid) { |
@@ -738,7 +737,7 @@ static void delete_name_file(pid_t pid) { | |||
738 | free(fname); | 737 | free(fname); |
739 | } | 738 | } |
740 | 739 | ||
741 | static void set_x11_file(pid_t pid, int display) { | 740 | void set_x11_file(pid_t pid, int display) { |
742 | char *fname; | 741 | char *fname; |
743 | if (asprintf(&fname, "%s/%d", RUN_FIREJAIL_X11_DIR, pid) == -1) | 742 | if (asprintf(&fname, "%s/%d", RUN_FIREJAIL_X11_DIR, pid) == -1) |
744 | errExit("asprintf"); | 743 | errExit("asprintf"); |