summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2023-10-30 22:18:07 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2023-10-30 22:18:07 +0000
commit453d3c3d4c96899c7bbca81b8a143ac7a934aebe (patch)
treeb50f06d9482c05aa0ccc78ae1cd2bb5d95577d3d
parent78eff200d85e0fc2f92622d221c0e3d81aaf9522 (diff)
ndb/dns: make sure theres only a single Topt option in getednsopt().
-rw-r--r--sys/src/cmd/ndb/dnresolve.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/src/cmd/ndb/dnresolve.c b/sys/src/cmd/ndb/dnresolve.c
index 8f51c1514..d4ada0ca2 100644
--- a/sys/src/cmd/ndb/dnresolve.c
+++ b/sys/src/cmd/ndb/dnresolve.c
@@ -502,14 +502,21 @@ initdnsmsg(DNSmsg *mp, RR *rp, int flags, ushort reqno)
RR*
getednsopt(DNSmsg *mp)
{
- RR *rp;
+ RR *rp, *x;
rp = rrremtype(&mp->ar, Topt);
if(rp == nil)
return nil;
mp->arcount--;
+ while((x = rp->next) != nil){
+ rp->next = x->next;
+ rrfree(x);
+ mp->arcount--;
+ }
+
if(rp->udpsize < 512)
rp->udpsize = 512;
+
return rp;
}