]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
Bug #690. Purify memory reference error
authorDanny Mayer <mayer@ntp.org>
Thu, 12 Oct 2006 02:40:46 +0000 (22:40 -0400)
committerDanny Mayer <mayer@ntp.org>
Thu, 12 Oct 2006 02:40:46 +0000 (22:40 -0400)
bk: 452dab2eyJONcblWhjtNZ_j-U4pDlw

ports/winnt/libntp/dnslookup.c

index 4b224405e94ad8491271a71b7efe5d24aed55560..6d72edc9937ada496ff221a38b30eeea36207299 100644 (file)
@@ -105,7 +105,7 @@ DNSlookup_name(
 {
        char buffer[sizeof(WSAQUERYSET) + 2048];
        WSAQUERYSET query;
-       hostent_t *addr = NULL;
+       struct hostent *addr = NULL;
        char *bufaddr = NULL;
        char ** addrlist = &bufaddr;
        int addrcnt = 0;
@@ -145,7 +145,6 @@ DNSlookup_name(
         */
        retcode = EAI_NONAME;
        dwLength = sizeof(buffer);
-       *addrlist = NULL;
 
        while(err == 0)         /* Drop out when error */
        {
@@ -164,6 +163,8 @@ DNSlookup_name(
                                memset(addr, 0, sizeof(struct hostent));
                                addr->h_addrtype = (short) results->lpcsaBuffer->iSocketType;
                                addr->h_length = sizeof(struct in_addr); /* Only passing back the address */
+                               addrlist = malloc(sizeof(char *));
+                               *addrlist = NULL;
                        }
                        for (i = 0; i < results->dwNumberOfCsAddrs; i++)
                        {
@@ -177,6 +178,7 @@ DNSlookup_name(
                addr->h_name = (char *) name;
                addr->h_addr_list = addrlist;
                retcode = 0;
+               *Addresses = addr;
        }
        else
        {
@@ -189,7 +191,6 @@ DNSlookup_name(
 #endif
                retcode = ReturnCode(errcode);
        }
-       *Addresses = addr;
        WSALookupServiceEnd(handle);
        return (retcode);
 }