From 1bbdf224bbed0ba85556ad31062c854a2775add7 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 24 May 2012 14:57:11 +0200 Subject: s4-dns: Add some NULL checks to create_response_rr Signed-off-by: Kai Blin --- source4/dns_server/dns_query.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source4/dns_server') diff --git a/source4/dns_server/dns_query.c b/source4/dns_server/dns_query.c index b3984a4639..212c5e42ab 100644 --- a/source4/dns_server/dns_query.c +++ b/source4/dns_server/dns_query.c @@ -47,9 +47,15 @@ static WERROR create_response_rr(const struct dns_name_question *question, switch (rec->wType) { case DNS_QTYPE_CNAME: ans[ai].rdata.cname_record = talloc_strdup(ans, rec->data.cname); + if (ans[ai].rdata.cname_record == NULL) { + return WERR_NOMEM; + } break; case DNS_QTYPE_A: ans[ai].rdata.ipv4_record = talloc_strdup(ans, rec->data.ipv4); + if (ans[ai].rdata.ipv4_record == NULL) { + return WERR_NOMEM; + } break; case DNS_QTYPE_AAAA: ans[ai].rdata.ipv6_record = rec->data.ipv6; @@ -77,9 +83,15 @@ static WERROR create_response_rr(const struct dns_name_question *question, break; case DNS_QTYPE_TXT: tmp = talloc_asprintf(ans, "\"%s\"", rec->data.txt.str[0]); + if (tmp == NULL) { + return WERR_NOMEM; + } for (i=1; idata.txt.count; i++) { tmp = talloc_asprintf_append(tmp, " \"%s\"", rec->data.txt.str[i]); + if (tmp == NULL) { + return WERR_NOMEM; + } } ans[ai].rdata.txt_record.txt = tmp; break; @@ -89,6 +101,9 @@ static WERROR create_response_rr(const struct dns_name_question *question, } ans[ai].name = talloc_strdup(ans, question->name); + if (ans[ai].name == NULL) { + return WERR_NOMEM; + } ans[ai].rr_type = rec->wType; ans[ai].rr_class = DNS_QCLASS_IN; ans[ai].ttl = rec->dwTtlSeconds; -- cgit