From 0ceeee4c8b207b3833e005643abf8997a60c255f Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Fri, 8 Aug 2014 02:06:03 +0200 Subject: [PATCH] ndb/dns: fix nil dereference crash with convM2DNS() returning reqmsg.qd == nil --- sys/src/cmd/ndb/dnstcp.c | 6 ++++++ sys/src/cmd/ndb/dnudpserver.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/sys/src/cmd/ndb/dnstcp.c b/sys/src/cmd/ndb/dnstcp.c index 72c188df9..3a9ee2955 100644 --- a/sys/src/cmd/ndb/dnstcp.c +++ b/sys/src/cmd/ndb/dnstcp.c @@ -122,6 +122,12 @@ main(int argc, char *argv[]) reqmsg.flags & Omask, caller); break; } + + if(reqmsg.qd == nil){ + dnslog("server: no question RR from %s", caller); + break; + } + if(debug) dnslog("[%d] %d: serve (%s) %d %s %s", getpid(), req.id, caller, diff --git a/sys/src/cmd/ndb/dnudpserver.c b/sys/src/cmd/ndb/dnudpserver.c index bcd03e96f..08bb10aea 100644 --- a/sys/src/cmd/ndb/dnudpserver.c +++ b/sys/src/cmd/ndb/dnudpserver.c @@ -215,6 +215,11 @@ restart: goto freereq; } + if(reqmsg.qd == nil){ + dnslog("server: no question RR from %I", buf); + goto freereq; + } + if(debug || (trace && subsume(trace, reqmsg.qd->owner->name))) dnslog("%d: serve (%I/%d) %d %s %s", req.id, buf, uh->rport[0]<<8 | uh->rport[1],