]> git.lizzy.rs Git - plan9front.git/commitdiff
snoopy: fix dns nil pointer crashes when formating dns packets (thanks sl)
authorcinap_lenrek <cinap_lenrek@felloff.net>
Wed, 18 Aug 2021 17:59:50 +0000 (17:59 +0000)
committercinap_lenrek <cinap_lenrek@felloff.net>
Wed, 18 Aug 2021 17:59:50 +0000 (17:59 +0000)
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.

sys/src/cmd/ip/snoopy/dns.c

index bd61ce7315d3d38137ef8fb8ae0cb77e3acd0972..8b357b00377547d515bdc21adefcae7d674e3d58 100644 (file)
@@ -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);