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.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
9952f11a84
commit
1f00a50c69
@@ -1613,9 +1613,11 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
|
||||
copy->nsec.next_domain_name = strdup(rr->nsec.next_domain_name);
|
||||
if (!copy->nsec.next_domain_name)
|
||||
return NULL;
|
||||
copy->nsec.types = bitmap_copy(rr->nsec.types);
|
||||
if (!copy->nsec.types)
|
||||
return NULL;
|
||||
if (rr->nsec.types) {
|
||||
copy->nsec.types = bitmap_copy(rr->nsec.types);
|
||||
if (!copy->nsec.types)
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case DNS_TYPE_DS:
|
||||
@@ -1640,9 +1642,11 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
|
||||
if (!copy->nsec3.next_hashed_name)
|
||||
return NULL;
|
||||
copy->nsec3.next_hashed_name_size = rr->nsec3.next_hashed_name_size;
|
||||
copy->nsec3.types = bitmap_copy(rr->nsec3.types);
|
||||
if (!copy->nsec3.types)
|
||||
return NULL;
|
||||
if (rr->nsec3.types) {
|
||||
copy->nsec3.types = bitmap_copy(rr->nsec3.types);
|
||||
if (!copy->nsec3.types)
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case DNS_TYPE_TLSA:
|
||||
|
||||
Reference in New Issue
Block a user