summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2021-08-18 17:59:50 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2021-08-18 17:59:50 +0000
commit97c6a1dd521c893de2c26b8876cdda283fdd7dc8 (patch)
tree51337d93a1a18c710505b44eeae90636492889ce
parentb0ae37013cf58b5cdeb67bb0b182669be1540aa9 (diff)
downloadplan9front-97c6a1dd521c893de2c26b8876cdda283fdd7dc8.tar.xz
snoopy: fix dns nil pointer crashes when formating dns packets (thanks sl)
snoopy shares ndb/dns's dns parser code, but has its own copy of rralloc() function, which is responsible to allocating auxiolary data structures on an RR depending on the type. ndb/dns gained some support for some new types, but snoopy's copy of rralloc() was not updated, resulting the auxiolary structures to be nil, and the shared parsing routines crashes when trying to dereference them. this just syncs the copies, we might consider moving rralloc() into its own file so it can be completely shared.
-rw-r--r--sys/src/cmd/ip/snoopy/dns.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/src/cmd/ip/snoopy/dns.c b/sys/src/cmd/ip/snoopy/dns.c
index bd61ce731..8b357b003 100644
--- a/sys/src/cmd/ip/snoopy/dns.c
+++ b/sys/src/cmd/ip/snoopy/dns.c
@@ -430,10 +430,15 @@ rralloc(int type)
rp->srv = emalloc(sizeof(*rp->srv));
setmalloctag(rp->srv, rp->pc);
break;
+ case Tdnskey:
case Tkey:
rp->key = emalloc(sizeof(*rp->key));
setmalloctag(rp->key, rp->pc);
break;
+ case Tcaa:
+ rp->caa = emalloc(sizeof(*rp->caa));
+ setmalloctag(rp->caa, rp->pc);
+ break;
case Tcert:
rp->cert = emalloc(sizeof(*rp->cert));
setmalloctag(rp->cert, rp->pc);