version 1.1.1.5, 2013/10/14 07:56:34
|
version 1.1.1.6, 2014/06/15 16:12:54
|
Line 285 sudo_putenv_nodebug(char *str, bool dupcheck, bool ove
|
Line 285 sudo_putenv_nodebug(char *str, bool dupcheck, bool ove
|
size_t nsize; |
size_t nsize; |
|
|
if (env.env_size > SIZE_MAX - 128) { |
if (env.env_size > SIZE_MAX - 128) { |
fatalx_nodebug(_("internal error, %s overflow"), | fatalx_nodebug(U_("internal error, %s overflow"), |
"sudo_putenv_nodebug()"); |
"sudo_putenv_nodebug()"); |
} |
} |
nsize = env.env_size + 128; |
nsize = env.env_size + 128; |
if (nsize > SIZE_MAX / sizeof(char *)) { |
if (nsize > SIZE_MAX / sizeof(char *)) { |
fatalx_nodebug(_("internal error, %s overflow"), | fatalx_nodebug(U_("internal error, %s overflow"), |
"sudo_putenv_nodebug()"); |
"sudo_putenv_nodebug()"); |
} |
} |
nenvp = realloc(env.envp, nsize * sizeof(char *)); |
nenvp = realloc(env.envp, nsize * sizeof(char *)); |
Line 364 sudo_putenv(char *str, bool dupcheck, bool overwrite)
|
Line 364 sudo_putenv(char *str, bool dupcheck, bool overwrite)
|
if (rval == -1) { |
if (rval == -1) { |
#ifdef ENV_DEBUG |
#ifdef ENV_DEBUG |
if (env.envp[env.env_len] != NULL) |
if (env.envp[env.env_len] != NULL) |
fatalx(_("sudo_putenv: corrupted envp, length mismatch")); | fatalx(U_("sudo_putenv: corrupted envp, length mismatch")); |
#endif |
#endif |
fatal(NULL); |
fatal(NULL); |
} |
} |
Line 392 sudo_setenv2(const char *var, const char *val, bool du
|
Line 392 sudo_setenv2(const char *var, const char *val, bool du
|
strlcat(estring, "=", esize) >= esize || |
strlcat(estring, "=", esize) >= esize || |
strlcat(estring, val, esize) >= esize) { |
strlcat(estring, val, esize) >= esize) { |
|
|
fatalx(_("internal error, %s overflow"), "sudo_setenv2()"); | fatalx(U_("internal error, %s overflow"), "sudo_setenv2()"); |
} |
} |
rval = sudo_putenv(estring, dupcheck, overwrite); |
rval = sudo_putenv(estring, dupcheck, overwrite); |
if (rval == -1) |
if (rval == -1) |
Line 558 matches_env_delete(const char *var)
|
Line 558 matches_env_delete(const char *var)
|
debug_decl(matches_env_delete, SUDO_DEBUG_ENV) |
debug_decl(matches_env_delete, SUDO_DEBUG_ENV) |
|
|
/* Skip anything listed in env_delete. */ |
/* Skip anything listed in env_delete. */ |
for (cur = def_env_delete; cur; cur = cur->next) { | SLIST_FOREACH(cur, &def_env_delete, entries) { |
len = strlen(cur->value); |
len = strlen(cur->value); |
/* Deal with '*' wildcard */ |
/* Deal with '*' wildcard */ |
if (cur->value[len - 1] == '*') { |
if (cur->value[len - 1] == '*') { |
Line 589 matches_env_check(const char *var)
|
Line 589 matches_env_check(const char *var)
|
int keepit = -1; |
int keepit = -1; |
debug_decl(matches_env_check, SUDO_DEBUG_ENV) |
debug_decl(matches_env_check, SUDO_DEBUG_ENV) |
|
|
for (cur = def_env_check; cur; cur = cur->next) { | SLIST_FOREACH(cur, &def_env_check, entries) { |
len = strlen(cur->value); |
len = strlen(cur->value); |
/* Deal with '*' wildcard */ |
/* Deal with '*' wildcard */ |
if (cur->value[len - 1] == '*') { |
if (cur->value[len - 1] == '*') { |
Line 624 matches_env_keep(const char *var)
|
Line 624 matches_env_keep(const char *var)
|
goto done; |
goto done; |
} |
} |
|
|
for (cur = def_env_keep; cur; cur = cur->next) { | SLIST_FOREACH(cur, &def_env_keep, entries) { |
len = strlen(cur->value); |
len = strlen(cur->value); |
/* Deal with '*' wildcard */ |
/* Deal with '*' wildcard */ |
if (cur->value[len - 1] == '*') { |
if (cur->value[len - 1] == '*') { |
Line 1085 init_envtables(void)
|
Line 1085 init_envtables(void)
|
for (p = initial_badenv_table; *p; p++) { |
for (p = initial_badenv_table; *p; p++) { |
cur = ecalloc(1, sizeof(struct list_member)); |
cur = ecalloc(1, sizeof(struct list_member)); |
cur->value = estrdup(*p); |
cur->value = estrdup(*p); |
cur->next = def_env_delete; | SLIST_INSERT_HEAD(&def_env_delete, cur, entries); |
def_env_delete = cur; | |
} |
} |
|
|
/* Fill in the "env_check" list. */ |
/* Fill in the "env_check" list. */ |
for (p = initial_checkenv_table; *p; p++) { |
for (p = initial_checkenv_table; *p; p++) { |
cur = ecalloc(1, sizeof(struct list_member)); |
cur = ecalloc(1, sizeof(struct list_member)); |
cur->value = estrdup(*p); |
cur->value = estrdup(*p); |
cur->next = def_env_check; | SLIST_INSERT_HEAD(&def_env_check, cur, entries); |
def_env_check = cur; | |
} |
} |
|
|
/* Fill in the "env_keep" list. */ |
/* Fill in the "env_keep" list. */ |
for (p = initial_keepenv_table; *p; p++) { |
for (p = initial_keepenv_table; *p; p++) { |
cur = ecalloc(1, sizeof(struct list_member)); |
cur = ecalloc(1, sizeof(struct list_member)); |
cur->value = estrdup(*p); |
cur->value = estrdup(*p); |
cur->next = def_env_keep; | SLIST_INSERT_HEAD(&def_env_keep, cur, entries); |
def_env_keep = cur; | |
} |
} |
} |
} |
|
|