]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix double frees in getaddrinfo() in libirs (#40209)
authorMukund Sivaraman <muks@isc.org>
Fri, 14 Aug 2015 08:24:03 +0000 (13:54 +0530)
committerMukund Sivaraman <muks@isc.org>
Fri, 14 Aug 2015 08:25:31 +0000 (13:55 +0530)
CHANGES
lib/irs/getaddrinfo.c

diff --git a/CHANGES b/CHANGES
index ba1d2dbaf8bf93066aef864ba52e4cd2ae802750..97e08a47187f9a829aa76c3754c9aea4629773cd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4179.  [bug]           Fix double frees in getaddrinfo() in libirs.
+                       [RT #40209]
+
 4178.  [bug]           Fix assertion failure in parsing UNSPEC(103) RR from
                        text. [RT #40274]
 
index 4f2578170179ac8f44d566ba9f72e65873dbfab3..e61602eb3e30facd3b8015b3db40473e257a359b 100644 (file)
@@ -1139,10 +1139,8 @@ add_ipv4(const char *hostname, int flags, struct addrinfo **aip,
        UNUSED(flags);
 
        ai = ai_clone(*aip, AF_INET); /* don't use ai_clone() */
-       if (ai == NULL) {
-               _freeaddrinfo(*aip);
+       if (ai == NULL)
                return (EAI_MEMORY);
-       }
 
        *aip = ai;
        ai->ai_socktype = socktype;
@@ -1262,11 +1260,8 @@ ai_clone(struct addrinfo *oai, int family) {
        ai = ai_alloc(family, ((family == AF_INET6) ?
            sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in)));
 
-       if (ai == NULL) {
-               if (oai != NULL)
-                       freeaddrinfo(oai);
+       if (ai == NULL)
                return (NULL);
-       }
        if (oai == NULL)
                return (ai);