]> granicus.if.org Git - sudo/commitdiff
For env_init() just use environ not the envp from main().
authorTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 26 Jun 2010 17:09:05 +0000 (13:09 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Sat, 26 Jun 2010 17:09:05 +0000 (13:09 -0400)
--HG--
branch : 1.7

env.c
sudo.c
sudo.h

diff --git a/env.c b/env.c
index d9df824f52829a0925650b3f81301452a03be6aa..0ebd593b5966d2bb47aa278fbaf98ba7b15b07e5 100644 (file)
--- 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 92262d290e68df81afa40df869401ccd45363e6a..978ad5c2c1aee57da5a9d3fcdf9dc49f7847a6f3 100644 (file)
--- 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 4fbdeca6665387f0571ead7655223f10fea76d8c..0aedecbdf7b5fd51c3c909900aa29634a807777c 100644 (file)
--- 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));