git: 9front

Download patch

ref: 5e6828946c6acba927fe9fb271d1c3824c04c9cd
parent: 9b3992adbd6146fd31cfd799600da82d545f6cbc
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Aug 18 13:59:50 EDT 2021

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.

--- a/sys/src/cmd/ip/snoopy/dns.c
+++ b/sys/src/cmd/ip/snoopy/dns.c
@@ -430,9 +430,14 @@
 		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));
--