summaryrefslogtreecommitdiff
path: root/ares_parse_aaaa_reply.c
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2011-06-14 16:46:13 +0200
committerJakub Hrozek <jhrozek@redhat.com>2011-06-14 16:46:13 +0200
commit18b6d475dc160efba24861e584dd6de92a573862 (patch)
treed78dd9c79ee4d30cee5f0d4d30eaedd03526f6f1 /ares_parse_aaaa_reply.c
parent978a929b405421bf53f8daf56451b11e3ee4fc03 (diff)
downloadc-ares-18b6d475dc160efba24861e584dd6de92a573862.tar.gz
c-ares-18b6d475dc160efba24861e584dd6de92a573862.tar.bz2
c-ares-18b6d475dc160efba24861e584dd6de92a573862.zip
Do not leak rr_name on failures inside ares_parse_aaaa_reply
Diffstat (limited to 'ares_parse_aaaa_reply.c')
-rw-r--r--ares_parse_aaaa_reply.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/ares_parse_aaaa_reply.c b/ares_parse_aaaa_reply.c
index a0f524d..1fbe838 100644
--- a/ares_parse_aaaa_reply.c
+++ b/ares_parse_aaaa_reply.c
@@ -132,6 +132,7 @@ int ares_parse_aaaa_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_aaaa_reply(const unsigned char *abuf, int alen,
{
if (aptr + sizeof(struct ares_in6_addr) > abuf + alen)
{
+ free(rr_name);
status = ARES_EBADRESP;
break;
}
@@ -159,6 +161,7 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
struct ares_addr6ttl * const at = &addrttls[naddrs];
if (aptr + sizeof(struct ares_in6_addr) > abuf + alen)
{
+ free(rr_name);
status = ARES_EBADRESP;
break;
}