Clean up environment after executing scripts.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 14 Jun 2004 14:32:10 +0000 (14:32 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 14 Jun 2004 14:32:10 +0000 (14:32 +0000)
src/process.c

index c1dd2d0f3606c25b909093165f39a2580d0ff9eb..7500259f4a295edd1ed3e50aa6498d9eec70370b 100644 (file)
@@ -363,6 +363,7 @@ bool execute_script(const char *name, char **envp)
        int status, len;
        struct stat s;
        char *scriptname;
+       int i;
 
        cp();
 
@@ -386,8 +387,8 @@ bool execute_script(const char *name, char **envp)
 #ifdef HAVE_PUTENV
        /* Set environment */
        
-       while(*envp)
-               putenv(*envp++);
+       for(i = 0; envp[i]; i++)
+               putenv(envp[i]);
 #endif
 
        scriptname[len - 1] = '\"';
@@ -395,7 +396,13 @@ bool execute_script(const char *name, char **envp)
 
        free(scriptname);
 
-       /* Unset environment? */
+       /* Unset environment */
+
+       for(i = 0; envp[i]; i++) {
+               char *e = strchr(envp[i], '=');
+               if(e)
+                       putenv(strndupa(envp[i], e - envp[i]));
+       }
 
 #ifdef WEXITSTATUS
        if(status != -1) {