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 6af6fc5..8f23785 100644
--- a/src/resolvers.c
+++ b/src/resolvers.c
@@ -1238,12 +1238,14 @@
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 */