]> 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:40:14 +0000 (14:10 +0530)
(cherry picked from commit d7262e5c8669d318531d47643356d554f7d0e2ee)
(cherry picked from commit cec7b9840492f788d1d5dcbfb1d420b0cf2ad4e7)

CHANGES
lib/irs/getaddrinfo.c

diff --git a/CHANGES b/CHANGES
index 4daeb043db26f027240569a46b39a498ec5cf2ec..1ad262b89eea393e35aead78b6daf5fa1871df26 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 95acb296bf6a794a4deb992a969bd119c95099ec..f61225c11f9573db881736dd200fcd22dbea92ba 100644 (file)
@@ -1138,10 +1138,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;
@@ -1261,11 +1259,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);