]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] fix memory leak
authorEvan Hunt <each@isc.org>
Tue, 4 Mar 2014 16:56:09 +0000 (08:56 -0800)
committerEvan Hunt <each@isc.org>
Tue, 4 Mar 2014 16:56:09 +0000 (08:56 -0800)
lib/dns/resolver.c

index 048a4f5fce9e062f1a572a5cfaa0c5fb3f6b6057..676d54817c35a4c784a70e45eedac52379e0da94 100644 (file)
@@ -6935,14 +6935,15 @@ log_nsid(isc_buffer_t *opt, size_t nsid_len, resquery_t *query,
        static const char hex[17] = "0123456789abcdef";
        char addrbuf[ISC_SOCKADDR_FORMATSIZE];
        isc_uint16_t buflen, i;
-       unsigned char *p, *buf, *pbuf, *nsid;
+       unsigned char *p, *nsid;
+       unsigned char *buf = NULL, *pbuf = NULL;
 
        /* Allocate buffer for storing hex version of the NSID */
        buflen = (isc_uint16_t)nsid_len * 2 + 1;
        buf = isc_mem_get(mctx, buflen);
        if (buf == NULL)
-               return;
-       pbuf = isc_mem_get(mctx, nsid_len);
+               goto cleanup;
+       pbuf = isc_mem_get(mctx, nsid_len + 1);
        if (pbuf == NULL)
                goto cleanup;
 
@@ -6971,7 +6972,10 @@ log_nsid(isc_buffer_t *opt, size_t nsid_len, resquery_t *query,
                      DNS_LOGMODULE_RESOLVER, level,
                      "received NSID %s (\"%s\") from %s", buf, pbuf, addrbuf);
  cleanup:
-       isc_mem_put(mctx, buf, buflen);
+       if (pbuf != NULL)
+               isc_mem_put(mctx, pbuf, nsid_len + 1);
+       if (buf != NULL)
+               isc_mem_put(mctx, buf, buflen);
 }
 
 static isc_boolean_t