From: Christopher Faulet Date: Tue, 23 Feb 2021 10:59:19 +0000 (+0100) Subject: BUG/MINOR: resolvers: Fix condition to release received ARs if not assigned X-Git-Tag: v2.4-dev10~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c246a4b6ce3fa0e70399e0158866d41b8662a7f;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/resolvers.c b/src/resolvers.c index 6af6fc5136..8f23785542 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -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 */