summaryrefslogtreecommitdiff
path: root/main/dns_core.c
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2015-07-29 12:58:23 -0500
committerMark Michelson <mmichelson@digium.com>2015-07-31 09:44:20 -0500
commit86034227ca47ea256186372f09f83a4e18fcdc01 (patch)
tree4fbaa4a0ded7ceee5dd10e8a4d6cf351c9fe14dc /main/dns_core.c
parent687597ca8c2412f79b79f9b13e17f3ec0ff0ce0c (diff)
dns_core: Allow zero-length DNS responses.
A testsuite test recently failed due to a crash that occurred in the DNS core. The problem was that the test could not resolve an address, did not set a result on the DNS query, and then indicated the query was completed. The DNS core does not handle the case of a query with no result gracefully, and so there is a crash. This changeset makes the DNS system resolver set a result with a zero-length answer in the case that a DNS resolution failure occurs early. The DNS core now also will accept such a response without treating it as invalid input. A unit test was updated to no longer treat setting a zero-length response as off-nominal. Change-Id: Ie56641e22debdaa61459e1c9a042e23b78affbf6
Diffstat (limited to 'main/dns_core.c')
-rw-r--r--main/dns_core.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/main/dns_core.c b/main/dns_core.c
index 0b471db91..cfce8efb0 100644
--- a/main/dns_core.c
+++ b/main/dns_core.c
@@ -399,10 +399,10 @@ int ast_dns_resolver_set_result(struct ast_dns_query *query, unsigned int secure
return -1;
}
- if (!answer || answer_size == 0) {
- ast_debug(2, "Query '%p': Could not set result information since no DNS answer was provided\n",
- query);
- return -1;
+ if (!answer) {
+ answer = "";
+ answer_size = 0;
+ ast_debug(2, "Query '%p': Assuming zero-sized answer on NULL input\n", query);
}
ast_dns_result_free(query->result);