mirror of
https://github.com/netblue30/firejail.git
synced 2026-05-16 14:16:16 -06:00
fix arg-max-count and arg-max-len options in firejail.config
This commit is contained in:
parent
a517fa91a2
commit
ee879a2f26
3 changed files with 12 additions and 15 deletions
|
|
@ -34,8 +34,8 @@ char *xpra_extra_params = "";
|
|||
char *xvfb_screen = "800x600x24";
|
||||
char *xvfb_extra_params = "";
|
||||
char *netfilter_default = NULL;
|
||||
int arg_max_count = 128; // maximum number of command arguments (argc)
|
||||
unsigned long arg_max_len = 4096; // --foobar=PATH
|
||||
int arg_max_count = MAX_ARGS; // maximum number of command arguments (argc)
|
||||
unsigned long arg_max_len = MAX_ARG_LEN; // --foobar=PATH
|
||||
int env_max_count = 256; // some sane maximum number of environment variables
|
||||
unsigned long env_max_len = (PATH_MAX + 32); // FOOBAR=SOME_PATH, only applied to Firejail's own sandboxed apps
|
||||
unsigned long join_timeout = 5000000; // microseconds
|
||||
|
|
@ -73,13 +73,9 @@ int checkcfg(int val) {
|
|||
const char *fname = SYSCONFDIR "/firejail.config";
|
||||
fp = fopen(fname, "re");
|
||||
if (!fp) {
|
||||
#ifdef HAVE_GLOBALCFG
|
||||
fprintf(stderr, "Error: Firejail configuration file %s not found\n", fname);
|
||||
exit(1);
|
||||
#else
|
||||
fprintf(stderr, "Warning: Firejail configuration file %s not found, using defaults\n", fname);
|
||||
initialized = 1;
|
||||
return cfg_val[val];
|
||||
#endif
|
||||
}
|
||||
|
||||
// read configuration file
|
||||
|
|
@ -225,12 +221,12 @@ int checkcfg(int val) {
|
|||
// arg max count
|
||||
else if (strncmp(ptr, "arg-max-count ", 14) == 0) {
|
||||
long tmp = strtol(ptr + 14, NULL, 10);
|
||||
if (tmp < 0 || tmp >= INT_MAX) {
|
||||
if (tmp > ARG_MAX) { // ARG_MAX defined in glibc limits.h
|
||||
if (arg_debug) {
|
||||
printf("arg-max-count out of range: %ld, using %d\n",
|
||||
tmp, INT_MAX);
|
||||
tmp, ARG_MAX);
|
||||
}
|
||||
arg_max_count = INT_MAX;
|
||||
arg_max_count = ARG_MAX;
|
||||
}
|
||||
else {
|
||||
arg_max_count = (int)tmp;
|
||||
|
|
|
|||
|
|
@ -397,6 +397,10 @@ extern pid_t sandbox_pid;
|
|||
extern mode_t orig_umask;
|
||||
extern unsigned long long start_timestamp;
|
||||
|
||||
#define MAX_ARGS 128 // maximum number of command arguments (argc)
|
||||
#define MAX_ARG_LEN (PATH_MAX + 32) // --foobar=PATH
|
||||
extern int arg_max_count;
|
||||
extern unsigned long arg_max_len;
|
||||
extern char **fullargv;
|
||||
extern int fullargc;
|
||||
|
||||
|
|
@ -875,8 +879,6 @@ extern char *xpra_extra_params;
|
|||
extern char *xvfb_screen;
|
||||
extern char *xvfb_extra_params;
|
||||
extern char *netfilter_default;
|
||||
extern int arg_max_count;
|
||||
extern unsigned long arg_max_len;
|
||||
extern int env_max_count;
|
||||
extern unsigned long env_max_len;
|
||||
extern unsigned long join_timeout;
|
||||
|
|
|
|||
|
|
@ -1093,9 +1093,8 @@ int main(int argc, char **argv, char **envp) {
|
|||
}
|
||||
|
||||
// initialize values from firejail.config (needed for arg/env checks)
|
||||
//maxarg rework: fix in progress
|
||||
// checkcfg(0);
|
||||
|
||||
checkcfg(0);
|
||||
|
||||
// sanity check for arguments
|
||||
if (argc >= arg_max_count) {
|
||||
fprintf(stderr, "Error: too many arguments: argc (%d) >= arg-max-count (%d)\n",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue