From 810ea84b638be6d0dd20afde9766e2ea79b9ed0c Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sat, 26 Jun 2010 13:09:05 -0400 Subject: [PATCH] For env_init() just use environ not the envp from main(). --HG-- branch : 1.7 --- env.c | 19 +++++++++---------- sudo.c | 2 +- sudo.h | 2 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/env.c b/env.c index d9df824f5..0ebd593b5 100644 --- a/env.c +++ b/env.c @@ -210,23 +210,22 @@ static const char *initial_keepenv_table[] = { * Initialize env based on envp. */ void -env_init(envp, lazy) - char * const envp[]; +env_init(lazy) int lazy; { char * const *ep; size_t len; - for (ep = envp; *ep != NULL; ep++) + for (ep = environ; *ep != NULL; ep++) continue; - len = (size_t)(ep - envp); + len = (size_t)(ep - environ); if (lazy) { /* * If we are already initialized due to lazy init (usualy via getenv()) * we need to avoid calling malloc() as it may call getenv() itself. */ - env.envp = (char **)envp; + env.envp = environ; env.env_len = len; env.env_size = len; } else if (!env.owned) { @@ -236,7 +235,7 @@ env_init(envp, lazy) #ifdef ENV_DEBUG memset(env.envp, 0, env.env_size * sizeof(char *)); #endif - memcpy(env.envp, envp, len * sizeof(char *)); + memcpy(env.envp, environ, len * sizeof(char *)); env.envp[len] = '\0'; env.owned = TRUE; } @@ -285,7 +284,7 @@ getenv(const char *var) size_t vlen = strlen(var); if (env.envp == NULL) - env_init(environ, TRUE); + env_init(TRUE); for (ev = env.envp; (cp = *ev) != NULL; ev++) { if (strncmp(var, cp, vlen) == 0 && cp[vlen] == '=') @@ -308,7 +307,7 @@ setenv(var, val, overwrite) size_t esize; if (env.envp == NULL) - env_init(environ, TRUE); + env_init(TRUE); if (!var || *var == '\0') { errno = EINVAL; @@ -360,7 +359,7 @@ unsetenv(var) size_t len; if (env.envp == NULL) - env_init(environ, TRUE); + env_init(TRUE); if (strchr(var, '=') != NULL) { errno = EINVAL; @@ -405,7 +404,7 @@ putenv(string) #endif { if (env.envp == NULL) - env_init(environ, TRUE); + env_init(TRUE); if (strchr(string, '=') == NULL) { errno = EINVAL; diff --git a/sudo.c b/sudo.c index 92262d290..978ad5c2c 100644 --- a/sudo.c +++ b/sudo.c @@ -203,7 +203,7 @@ main(argc, argv, envp) (void) sigaction(SIGTSTP, &sa, &saved_sa_tstp); /* Initialize environment functions (including replacements). */ - env_init(envp, FALSE); + env_init(FALSE); /* * Turn off core dumps and make sure fds 0-2 are open. diff --git a/sudo.h b/sudo.h index 4fbdeca66..0aedecbdf 100644 --- a/sudo.h +++ b/sudo.h @@ -226,7 +226,7 @@ void remove_timestamp __P((int)); /* env.c */ char **env_get __P((void)); -void env_init __P((char * const envp[], int lazy)); +void env_init __P((int lazy)); void init_envtables __P((void)); void insert_env_vars __P((struct list_member *)); void read_env_file __P((const char *, int)); -- 2.40.0