X Tutup
Skip to content

Commit 1f00a50

Browse files
puleglotkeszybz
authored andcommitted
resolved: do not try to copy empty NSEC types bitmaps
dns_resource_record_copy() assumes that NSEC types bitmap is non-empty which results in a null pointer dereference inside bitmap_copy() in some cases. Fix this by calling bitmap_copy() conditionally.
1 parent 9952f11 commit 1f00a50

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/resolve/resolved-dns-rr.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,9 +1613,11 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
16131613
copy->nsec.next_domain_name = strdup(rr->nsec.next_domain_name);
16141614
if (!copy->nsec.next_domain_name)
16151615
return NULL;
1616-
copy->nsec.types = bitmap_copy(rr->nsec.types);
1617-
if (!copy->nsec.types)
1618-
return NULL;
1616+
if (rr->nsec.types) {
1617+
copy->nsec.types = bitmap_copy(rr->nsec.types);
1618+
if (!copy->nsec.types)
1619+
return NULL;
1620+
}
16191621
break;
16201622

16211623
case DNS_TYPE_DS:
@@ -1640,9 +1642,11 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
16401642
if (!copy->nsec3.next_hashed_name)
16411643
return NULL;
16421644
copy->nsec3.next_hashed_name_size = rr->nsec3.next_hashed_name_size;
1643-
copy->nsec3.types = bitmap_copy(rr->nsec3.types);
1644-
if (!copy->nsec3.types)
1645-
return NULL;
1645+
if (rr->nsec3.types) {
1646+
copy->nsec3.types = bitmap_copy(rr->nsec3.types);
1647+
if (!copy->nsec3.types)
1648+
return NULL;
1649+
}
16461650
break;
16471651

16481652
case DNS_TYPE_TLSA:

0 commit comments

Comments
 (0)
X Tutup