From 9c246a4b6ce3fa0e70399e0158866d41b8662a7f Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 23 Feb 2021 11:59:19 +0100 Subject: [PATCH] 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. --- src/resolvers.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/resolvers.c b/src/resolvers.c index 6af6fc5..8f23785 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 */ -- 1.7.10.4