diff options
-rw-r--r-- | src/firejail/checkcfg.c | 4 | ||||
-rw-r--r-- | src/firejail/firejail.h | 2 | ||||
-rw-r--r-- | src/firejail/join.c | 7 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/firejail/checkcfg.c b/src/firejail/checkcfg.c index 6ea92cd9d..d6b591133 100644 --- a/src/firejail/checkcfg.c +++ b/src/firejail/checkcfg.c | |||
@@ -31,7 +31,7 @@ char *xpra_extra_params = ""; | |||
31 | char *xvfb_screen = "800x600x24"; | 31 | char *xvfb_screen = "800x600x24"; |
32 | char *xvfb_extra_params = ""; | 32 | char *xvfb_extra_params = ""; |
33 | char *netfilter_default = NULL; | 33 | char *netfilter_default = NULL; |
34 | unsigned join_timeout = 50; // 5 sec (unit is 0.1 sec) | 34 | unsigned long join_timeout = 5000000; // microseconds |
35 | 35 | ||
36 | int checkcfg(int val) { | 36 | int checkcfg(int val) { |
37 | assert(val < CFG_MAX); | 37 | assert(val < CFG_MAX); |
@@ -217,7 +217,7 @@ int checkcfg(int val) { | |||
217 | 217 | ||
218 | // timeout for join option | 218 | // timeout for join option |
219 | else if (strncmp(ptr, "join-timeout ", 13) == 0) | 219 | else if (strncmp(ptr, "join-timeout ", 13) == 0) |
220 | join_timeout = strtoul(ptr + 13, NULL, 10) * 10; | 220 | join_timeout = strtoul(ptr + 13, NULL, 10) * 1000000; // seconds to microseconds |
221 | 221 | ||
222 | else | 222 | else |
223 | goto errout; | 223 | goto errout; |
diff --git a/src/firejail/firejail.h b/src/firejail/firejail.h index 37d8c6883..8b7cfdcdd 100644 --- a/src/firejail/firejail.h +++ b/src/firejail/firejail.h | |||
@@ -738,7 +738,7 @@ extern char *xpra_extra_params; | |||
738 | extern char *xvfb_screen; | 738 | extern char *xvfb_screen; |
739 | extern char *xvfb_extra_params; | 739 | extern char *xvfb_extra_params; |
740 | extern char *netfilter_default; | 740 | extern char *netfilter_default; |
741 | extern unsigned join_timeout; | 741 | extern unsigned long join_timeout; |
742 | int checkcfg(int val); | 742 | int checkcfg(int val); |
743 | void print_compiletime_support(void); | 743 | void print_compiletime_support(void); |
744 | 744 | ||
diff --git a/src/firejail/join.c b/src/firejail/join.c index 08120cffe..ddf26e0e7 100644 --- a/src/firejail/join.c +++ b/src/firejail/join.c | |||
@@ -318,15 +318,16 @@ int is_ready_for_join(const pid_t pid) { | |||
318 | return 1; | 318 | return 1; |
319 | } | 319 | } |
320 | 320 | ||
321 | #define SNOOZE 100000 // sleep interval in microseconds | ||
321 | void check_join_permission(pid_t pid) { | 322 | void check_join_permission(pid_t pid) { |
322 | // check if pid belongs to a fully set up firejail sandbox | 323 | // check if pid belongs to a fully set up firejail sandbox |
323 | unsigned i; | 324 | unsigned long i; |
324 | for (i = 0; is_ready_for_join(pid) == 0; i++) { // give sandbox some time to start up | 325 | for (i = 0; is_ready_for_join(pid) == 0; i += SNOOZE) { // give sandbox some time to start up |
325 | if (i >= join_timeout) { | 326 | if (i >= join_timeout) { |
326 | fprintf(stderr, "Error: no valid sandbox\n"); | 327 | fprintf(stderr, "Error: no valid sandbox\n"); |
327 | exit(1); | 328 | exit(1); |
328 | } | 329 | } |
329 | usleep(100000); // 0.1 sec | 330 | usleep(SNOOZE); |
330 | } | 331 | } |
331 | // check privileges for non-root users | 332 | // check privileges for non-root users |
332 | uid_t uid = getuid(); | 333 | uid_t uid = getuid(); |