Do not leak rr_name on failures inside ares_parse_a_reply
authorJakub Hrozek <jhrozek@redhat.com>
Tue, 14 Jun 2011 14:48:26 +0000 (16:48 +0200)
committerJakub Hrozek <jhrozek@redhat.com>
Tue, 14 Jun 2011 14:48:26 +0000 (16:48 +0200)
ares_parse_a_reply.c

index 93012549c90f471fb4caa35478fd98067ea142e0..66d9bdf974d42c0abd40f1aba52c86a7fe8b4978 100644 (file)
@@ -132,6 +132,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
       aptr += len;
       if (aptr + RRFIXEDSZ > abuf + alen)
         {
+          free(rr_name);
           status = ARES_EBADRESP;
           break;
         }
@@ -149,6 +150,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
             {
               if (aptr + sizeof(struct in_addr) > abuf + alen)
               {
+                free(rr_name);
                 status = ARES_EBADRESP;
                 break;
               }
@@ -159,6 +161,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
               struct ares_addrttl * const at = &addrttls[naddrs];
               if (aptr + sizeof(struct in_addr) > abuf + alen)
               {
+                free(rr_name);
                 status = ARES_EBADRESP;
                 break;
               }