mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-23 23:28:18 -04:00
lib/dns/rbtdb.c: Add DbC check to safely dereference rbtdb in rbt_datafixer()
This commit is contained in:
parent
8be5c3fcfc
commit
d508ce4036
1 changed files with 5 additions and 8 deletions
|
|
@ -7081,17 +7081,14 @@ rbt_datafixer(dns_rbtnode_t *rbtnode, void *base, size_t filesize,
|
|||
dns_rbtdb_t *rbtdb = (dns_rbtdb_t *) arg;
|
||||
rdatasetheader_t *header;
|
||||
unsigned char *limit = ((unsigned char *) base) + filesize;
|
||||
unsigned char *p;
|
||||
size_t size;
|
||||
unsigned int count;
|
||||
|
||||
REQUIRE(rbtnode != NULL);
|
||||
REQUIRE(VALID_RBTDB(rbtdb));
|
||||
|
||||
for (header = rbtnode->data; header != NULL; header = header->next) {
|
||||
p = (unsigned char *) header;
|
||||
|
||||
size = dns_rdataslab_size(p, sizeof(*header));
|
||||
count = dns_rdataslab_count(p, sizeof(*header));;
|
||||
unsigned char *p = (unsigned char *) header;
|
||||
size_t size = dns_rdataslab_size(p, sizeof(*header));
|
||||
unsigned int count = dns_rdataslab_count(p, sizeof(*header));;
|
||||
rbtdb->current_version->records += count;
|
||||
rbtdb->current_version->bytes += size;
|
||||
isc_crc64_update(crc, p, size);
|
||||
|
|
@ -7105,7 +7102,7 @@ rbt_datafixer(dns_rbtnode_t *rbtnode, void *base, size_t filesize,
|
|||
header->node = rbtnode;
|
||||
header->node_is_relative = 0;
|
||||
|
||||
if (rbtdb != NULL && RESIGN(header) &&
|
||||
if (RESIGN(header) &&
|
||||
(header->resign != 0 || header->resign_lsb != 0))
|
||||
{
|
||||
int idx = header->node->locknum;
|
||||
|
|
|
|||
Loading…
Reference in a new issue