diff options
Diffstat (limited to 'src/firejail/checkcfg.c')
-rw-r--r-- | src/firejail/checkcfg.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/firejail/checkcfg.c b/src/firejail/checkcfg.c index dff892ea3..56ab7c932 100644 --- a/src/firejail/checkcfg.c +++ b/src/firejail/checkcfg.c | |||
@@ -27,6 +27,8 @@ static int initialized = 0; | |||
27 | static int cfg_val[CFG_MAX]; | 27 | static int cfg_val[CFG_MAX]; |
28 | char *xephyr_screen = "800x600"; | 28 | char *xephyr_screen = "800x600"; |
29 | char *xephyr_extra_params = ""; | 29 | char *xephyr_extra_params = ""; |
30 | char *xvfb_screen = "800x600x24"; | ||
31 | char *xvfb_extra_params = ""; | ||
30 | char *netfilter_default = NULL; | 32 | char *netfilter_default = NULL; |
31 | 33 | ||
32 | int checkcfg(int val) { | 34 | int checkcfg(int val) { |
@@ -234,6 +236,28 @@ int checkcfg(int val) { | |||
234 | errExit("strdup"); | 236 | errExit("strdup"); |
235 | } | 237 | } |
236 | 238 | ||
239 | // Xvfb screen size | ||
240 | else if (strncmp(ptr, "xvfb-screen ", 12) == 0) { | ||
241 | // expecting three numbers separated by x's | ||
242 | unsigned int n1; | ||
243 | unsigned int n2; | ||
244 | unsigned int n3; | ||
245 | int rv = sscanf(ptr + 12, "%ux%ux%u", &n1, &n2, &n3); | ||
246 | if (rv != 3) | ||
247 | goto errout; | ||
248 | if (asprintf(&xvfb_screen, "%ux%ux%u", n1, n2, n3) == -1) | ||
249 | errExit("asprintf"); | ||
250 | } | ||
251 | |||
252 | // Xvfb extra parameters | ||
253 | else if (strncmp(ptr, "xvfb-extra-params ", 18) == 0) { | ||
254 | if (*xvfb_extra_params != '\0') | ||
255 | goto errout; | ||
256 | xvfb_extra_params = strdup(ptr + 18); | ||
257 | if (!xvfb_extra_params) | ||
258 | errExit("strdup"); | ||
259 | } | ||
260 | |||
237 | // quiet by default | 261 | // quiet by default |
238 | else if (strncmp(ptr, "quiet-by-default ", 17) == 0) { | 262 | else if (strncmp(ptr, "quiet-by-default ", 17) == 0) { |
239 | if (strcmp(ptr + 17, "yes") == 0) | 263 | if (strcmp(ptr + 17, "yes") == 0) |