diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-08-08 02:06:03 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-08-08 02:06:03 +0200 |
commit | 0ceeee4c8b207b3833e005643abf8997a60c255f (patch) | |
tree | 7eae6dbf10f8e772ce9e31958357861b07f728d0 /sys/src/cmd/ndb | |
parent | 45333cdc92654eb58dc8c820dd58ae23c4a49640 (diff) |
ndb/dns: fix nil dereference crash with convM2DNS() returning reqmsg.qd == nil
Diffstat (limited to 'sys/src/cmd/ndb')
-rw-r--r-- | sys/src/cmd/ndb/dnstcp.c | 6 | ||||
-rw-r--r-- | sys/src/cmd/ndb/dnudpserver.c | 5 |
2 files changed, 11 insertions, 0 deletions
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], |