fix memory leak caused by switch to vfork
authorRuss Dill <Russ.Dill@asu.edu>
Wed, 19 May 2004 07:45:47 +0000 (07:45 -0000)
committerRuss Dill <Russ.Dill@asu.edu>
Wed, 19 May 2004 07:45:47 +0000 (07:45 -0000)
networking/udhcp/script.c

index e0a8dad..820fbb0 100644 (file)
@@ -206,21 +206,22 @@ static char **fill_envp(struct dhcpMessage *packet)
 void run_script(struct dhcpMessage *packet, const char *name)
 {
        int pid;
-       char **envp;
+       char **envp, **curr;
 
        if (client_config.script == NULL)
                return;
 
        DEBUG(LOG_INFO, "vforking and execle'ing %s", client_config.script);
 
+       envp = fill_envp(packet);
        /* call script */
        pid = vfork();
        if (pid) {
                waitpid(pid, NULL, 0);
+               for (curr = envp; *curr; curr++) free(*curr);
+               free(envp);
                return;
        } else if (pid == 0) {
-               envp = fill_envp(packet);
-
                /* close fd's? */
 
                /* exec script */