dnsmsq: fix not properly handled null pointer checker
check p incase skip_questions returns null and bad return
0 - (unsigned char *)header
Test: mma -j8
Change-Id: I50e64cc8d1a0a8eb53eb868903927e92ec46c1b7
diff --git a/src/rfc1035.c b/src/rfc1035.c
index e440e8a..d4e9bf5 100755
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -902,8 +902,11 @@
size_t setup_reply(HEADER *header, size_t qlen,
struct all_addr *addrp, unsigned short flags, unsigned long ttl)
{
- unsigned char *p = skip_questions(header, qlen);
-
+ unsigned char *p;
+
+ if (!(p = skip_questions(header, qlen)))
+ return 0;
+
header->qr = 1; /* response */
header->aa = 0; /* authoritive */
header->ra = 1; /* recursion if available */
@@ -917,7 +920,7 @@
header->rcode = NOERROR; /* empty domain */
else if (flags == F_NXDOMAIN)
header->rcode = NXDOMAIN;
- else if (p && flags == F_IPV4)
+ else if (flags == F_IPV4)
{ /* we know the address */
header->rcode = NOERROR;
header->ancount = htons(1);
@@ -925,7 +928,7 @@
add_resource_record(header, NULL, NULL, sizeof(HEADER), &p, ttl, NULL, T_A, C_IN, "4", addrp);
}
#ifdef HAVE_IPV6
- else if (p && flags == F_IPV6)
+ else if (flags == F_IPV6)
{
header->rcode = NOERROR;
header->ancount = htons(1);