BUG/MINOR: resolvers: Fix condition to release received ARs if not assigned

At the end of resolv_validate_dns_response(), if a received additionnal
record is not assigned to an existing server record, it is released. But the
condition to do so is buggy. If "answer_record" (the received AR) is not
assigned, "tmp_record" is not a valid record object. It is just a dummy
record "representing" the head of the record list.

Now, the condition is far cleaner. This patch must be backported as far as
2.2.
This commit is contained in:
Christopher Faulet 2021-02-23 11:59:19 +01:00
parent 5926e384e6
commit 9c246a4b6c

View File

@ -1238,12 +1238,14 @@ static int resolv_validate_dns_response(unsigned char *resp, unsigned char *bufe
if (tmp_record->ar_item)
pool_free(resolv_answer_item_pool, tmp_record->ar_item);
tmp_record->ar_item = answer_record;
answer_record = NULL;
break;
}
}
if (tmp_record->ar_item != answer_record)
if (answer_record) {
pool_free(resolv_answer_item_pool, answer_record);
answer_record = NULL;
answer_record = NULL;
}
}
} /* for i 0 to arcount */