diff --git a/namesys/dns.c b/namesys/dns.c index 3ed6a90..454bc1b 100644 --- a/namesys/dns.c +++ b/namesys/dns.c @@ -68,13 +68,6 @@ int DNSResolverResolveOnce (char **path, char *name) return ErrPipe; } - dnslink = malloc(strlen(domain) + sizeof(dlprefix)); - if (!dnslink) { - return ErrAllocFailed; - } - strcpy (dnslink, dlprefix); - strcat (dnslink, domain); - r = fork(); switch(r) { case -1: @@ -90,6 +83,14 @@ int DNSResolverResolveOnce (char **path, char *name) return ErrPipe; case 0: // child close(p2[STDIN_FILENO]); // we don't need to read at child process. + + dnslink = malloc(strlen(domain) + sizeof(dlprefix)); + if (!dnslink) { + return ErrAllocFailed; + } + strcpy (dnslink, dlprefix); + strcat (dnslink, domain); + return workDomain (p2[STDOUT_FILENO], r, dnslink); } close(p2[STDOUT_FILENO]); // we don't need to write at main process. diff --git a/path/path.c b/path/path.c index 75b71b7..057835c 100644 --- a/path/path.c +++ b/path/path.c @@ -43,7 +43,7 @@ char** SplitN (char *p, char *delim, int n) r = calloc(sizeof(char*), n + 1); // splits plus NULL pointer termination if (!r) { - free(r); + free(rbuf); return NULL; }