2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-03 08:05:21 +00:00

mem_maybedup() can no longer fail

mem_maybedup() calls isc_mem_allocate() if an mctx is supplied,
but that can no longer fail, so now the only way mem_maybedup()
could return NULL is if it was given a NULL source address by the
caller. this commit adds a REQUIRE to prevent that scenario, and
cleans up all the calling code that previously checked for NULL
return values.

this function is mostly used in rdata tostruct() implementations, so
the documentation for dns_rdata_tostruct() has been updated to
remove 'ISC_R_NOMEMORY' as a possible return value.
This commit is contained in:
Evan Hunt
2022-02-14 13:05:03 -08:00
parent 5e4580d479
commit bbaade23eb
42 changed files with 6 additions and 308 deletions

View File

@@ -523,7 +523,8 @@ dns_rdata_tostruct(const dns_rdata_t *rdata, void *target, isc_mem_t *mctx);
* *
* Result: * Result:
*\li Success *\li Success
*\li Resource Limit: Not enough memory *\li Not Implemented
*\li Unexpected end of input
*/ */
void void

View File

@@ -420,11 +420,14 @@ name_duporclone(const dns_name_t *source, isc_mem_t *mctx, dns_name_t *target) {
static inline void * static inline void *
mem_maybedup(isc_mem_t *mctx, void *source, size_t length) { mem_maybedup(isc_mem_t *mctx, void *source, size_t length) {
void *copy; void *copy = NULL;
REQUIRE(source != NULL);
if (mctx == NULL) { if (mctx == NULL) {
return (source); return (source);
} }
copy = isc_mem_allocate(mctx, length); copy = isc_mem_allocate(mctx, length);
memmove(copy, source, length); memmove(copy, source, length);

View File

@@ -496,9 +496,6 @@ tostruct_any_tsig(ARGS_TOSTRUCT) {
*/ */
INSIST(sr.length >= tsig->siglen); INSIST(sr.length >= tsig->siglen);
tsig->signature = mem_maybedup(mctx, sr.base, tsig->siglen); tsig->signature = mem_maybedup(mctx, sr.base, tsig->siglen);
if (tsig->signature == NULL) {
goto cleanup;
}
isc_region_consume(&sr, tsig->siglen); isc_region_consume(&sr, tsig->siglen);
/* /*
@@ -524,21 +521,9 @@ tostruct_any_tsig(ARGS_TOSTRUCT) {
*/ */
INSIST(sr.length == tsig->otherlen); INSIST(sr.length == tsig->otherlen);
tsig->other = mem_maybedup(mctx, sr.base, tsig->otherlen); tsig->other = mem_maybedup(mctx, sr.base, tsig->otherlen);
if (tsig->other == NULL) {
goto cleanup;
}
tsig->mctx = mctx; tsig->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&tsig->algorithm, tsig->mctx);
}
if (mctx != NULL && tsig->signature != NULL) {
isc_mem_free(mctx, tsig->signature);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -360,9 +360,6 @@ tostruct_amtrelay(ARGS_TOSTRUCT) {
if (region.length != 0) { if (region.length != 0) {
amtrelay->data = mem_maybedup(mctx, region.base, amtrelay->data = mem_maybedup(mctx, region.base,
region.length); region.length);
if (amtrelay->data == NULL) {
return (ISC_R_NOMEMORY);
}
} }
amtrelay->length = region.length; amtrelay->length = region.length;
} }

View File

@@ -529,9 +529,6 @@ tostruct_caa(ARGS_TOSTRUCT) {
return (ISC_R_UNEXPECTEDEND); return (ISC_R_UNEXPECTEDEND);
} }
caa->tag = mem_maybedup(mctx, sr.base, caa->tag_len); caa->tag = mem_maybedup(mctx, sr.base, caa->tag_len);
if (caa->tag == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&sr, caa->tag_len); isc_region_consume(&sr, caa->tag_len);
/* /*
@@ -539,9 +536,6 @@ tostruct_caa(ARGS_TOSTRUCT) {
*/ */
caa->value_len = sr.length; caa->value_len = sr.length;
caa->value = mem_maybedup(mctx, sr.base, sr.length); caa->value = mem_maybedup(mctx, sr.base, sr.length);
if (caa->value == NULL) {
return (ISC_R_NOMEMORY);
}
caa->mctx = mctx; caa->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);

View File

@@ -207,10 +207,6 @@ tostruct_cert(ARGS_TOSTRUCT) {
cert->length = region.length; cert->length = region.length;
cert->certificate = mem_maybedup(mctx, region.base, region.length); cert->certificate = mem_maybedup(mctx, region.base, region.length);
if (cert->certificate == NULL) {
return (ISC_R_NOMEMORY);
}
cert->mctx = mctx; cert->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -183,15 +183,8 @@ tostruct_csync(ARGS_TOSTRUCT) {
csync->len = region.length; csync->len = region.length;
csync->typebits = mem_maybedup(mctx, region.base, region.length); csync->typebits = mem_maybedup(mctx, region.base, region.length);
if (csync->typebits == NULL) {
goto cleanup;
}
csync->mctx = mctx; csync->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -258,9 +258,6 @@ tostruct_doa(ARGS_TOSTRUCT) {
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
INSIST(doa->mediatype_len <= region.length); INSIST(doa->mediatype_len <= region.length);
doa->mediatype = mem_maybedup(mctx, region.base, doa->mediatype_len); doa->mediatype = mem_maybedup(mctx, region.base, doa->mediatype_len);
if (doa->mediatype == NULL) {
goto cleanup;
}
isc_region_consume(&region, doa->mediatype_len); isc_region_consume(&region, doa->mediatype_len);
/* /*
@@ -270,21 +267,12 @@ tostruct_doa(ARGS_TOSTRUCT) {
doa->data = NULL; doa->data = NULL;
if (doa->data_len > 0) { if (doa->data_len > 0) {
doa->data = mem_maybedup(mctx, region.base, doa->data_len); doa->data = mem_maybedup(mctx, region.base, doa->data_len);
if (doa->data == NULL) {
goto cleanup;
}
isc_region_consume(&region, doa->data_len); isc_region_consume(&region, doa->data_len);
} }
doa->mctx = mctx; doa->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL && doa->mediatype != NULL) {
isc_mem_free(mctx, doa->mediatype);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -293,10 +293,6 @@ generic_tostruct_ds(ARGS_TOSTRUCT) {
ds->length = region.length; ds->length = region.length;
ds->digest = mem_maybedup(mctx, region.base, region.length); ds->digest = mem_maybedup(mctx, region.base, region.length);
if (ds->digest == NULL) {
return (ISC_R_NOMEMORY);
}
ds->mctx = mctx; ds->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -140,43 +140,23 @@ tostruct_gpos(ARGS_TOSTRUCT) {
gpos->long_len = uint8_fromregion(&region); gpos->long_len = uint8_fromregion(&region);
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
gpos->longitude = mem_maybedup(mctx, region.base, gpos->long_len); gpos->longitude = mem_maybedup(mctx, region.base, gpos->long_len);
if (gpos->longitude == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&region, gpos->long_len); isc_region_consume(&region, gpos->long_len);
gpos->lat_len = uint8_fromregion(&region); gpos->lat_len = uint8_fromregion(&region);
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
gpos->latitude = mem_maybedup(mctx, region.base, gpos->lat_len); gpos->latitude = mem_maybedup(mctx, region.base, gpos->lat_len);
if (gpos->latitude == NULL) {
goto cleanup_longitude;
}
isc_region_consume(&region, gpos->lat_len); isc_region_consume(&region, gpos->lat_len);
gpos->alt_len = uint8_fromregion(&region); gpos->alt_len = uint8_fromregion(&region);
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
if (gpos->lat_len > 0) { if (gpos->lat_len > 0) {
gpos->altitude = mem_maybedup(mctx, region.base, gpos->alt_len); gpos->altitude = mem_maybedup(mctx, region.base, gpos->alt_len);
if (gpos->altitude == NULL) {
goto cleanup_latitude;
}
} else { } else {
gpos->altitude = NULL; gpos->altitude = NULL;
} }
gpos->mctx = mctx; gpos->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup_latitude:
if (mctx != NULL && gpos->longitude != NULL) {
isc_mem_free(mctx, gpos->longitude);
}
cleanup_longitude:
if (mctx != NULL && gpos->latitude != NULL) {
isc_mem_free(mctx, gpos->latitude);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -125,26 +125,13 @@ tostruct_hinfo(ARGS_TOSTRUCT) {
hinfo->cpu_len = uint8_fromregion(&region); hinfo->cpu_len = uint8_fromregion(&region);
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
hinfo->cpu = mem_maybedup(mctx, region.base, hinfo->cpu_len); hinfo->cpu = mem_maybedup(mctx, region.base, hinfo->cpu_len);
if (hinfo->cpu == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&region, hinfo->cpu_len); isc_region_consume(&region, hinfo->cpu_len);
hinfo->os_len = uint8_fromregion(&region); hinfo->os_len = uint8_fromregion(&region);
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
hinfo->os = mem_maybedup(mctx, region.base, hinfo->os_len); hinfo->os = mem_maybedup(mctx, region.base, hinfo->os_len);
if (hinfo->os == NULL) {
goto cleanup;
}
hinfo->mctx = mctx; hinfo->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL && hinfo->cpu != NULL) {
isc_mem_free(mctx, hinfo->cpu);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -322,42 +322,21 @@ tostruct_hip(ARGS_TOSTRUCT) {
hip->hit = hip->key = hip->servers = NULL; hip->hit = hip->key = hip->servers = NULL;
hip->hit = mem_maybedup(mctx, region.base, hip->hit_len); hip->hit = mem_maybedup(mctx, region.base, hip->hit_len);
if (hip->hit == NULL) {
goto cleanup;
}
isc_region_consume(&region, hip->hit_len); isc_region_consume(&region, hip->hit_len);
INSIST(hip->key_len <= region.length); INSIST(hip->key_len <= region.length);
hip->key = mem_maybedup(mctx, region.base, hip->key_len); hip->key = mem_maybedup(mctx, region.base, hip->key_len);
if (hip->key == NULL) {
goto cleanup;
}
isc_region_consume(&region, hip->key_len); isc_region_consume(&region, hip->key_len);
hip->servers_len = region.length; hip->servers_len = region.length;
if (hip->servers_len != 0) { if (hip->servers_len != 0) {
hip->servers = mem_maybedup(mctx, region.base, region.length); hip->servers = mem_maybedup(mctx, region.base, region.length);
if (hip->servers == NULL) {
goto cleanup;
}
} }
hip->offset = hip->servers_len; hip->offset = hip->servers_len;
hip->mctx = mctx; hip->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (hip->hit != NULL) {
isc_mem_free(mctx, hip->hit);
}
if (hip->key != NULL) {
isc_mem_free(mctx, hip->key);
}
if (hip->servers != NULL) {
isc_mem_free(mctx, hip->servers);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -400,13 +400,6 @@ tostruct_ipseckey(ARGS_TOSTRUCT) {
if (ipseckey->keylength != 0U) { if (ipseckey->keylength != 0U) {
ipseckey->key = mem_maybedup(mctx, region.base, ipseckey->key = mem_maybedup(mctx, region.base,
ipseckey->keylength); ipseckey->keylength);
if (ipseckey->key == NULL) {
if (ipseckey->gateway_type == 3) {
dns_name_free(&ipseckey->gateway,
ipseckey->mctx);
}
return (ISC_R_NOMEMORY);
}
} else { } else {
ipseckey->key = NULL; ipseckey->key = NULL;
} }

View File

@@ -146,9 +146,6 @@ tostruct_isdn(ARGS_TOSTRUCT) {
isdn->isdn_len = uint8_fromregion(&r); isdn->isdn_len = uint8_fromregion(&r);
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
isdn->isdn = mem_maybedup(mctx, r.base, isdn->isdn_len); isdn->isdn = mem_maybedup(mctx, r.base, isdn->isdn_len);
if (isdn->isdn == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&r, isdn->isdn_len); isc_region_consume(&r, isdn->isdn_len);
if (r.length == 0) { if (r.length == 0) {
@@ -159,19 +156,10 @@ tostruct_isdn(ARGS_TOSTRUCT) {
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
isdn->subaddress = mem_maybedup(mctx, r.base, isdn->subaddress = mem_maybedup(mctx, r.base,
isdn->subaddress_len); isdn->subaddress_len);
if (isdn->subaddress == NULL) {
goto cleanup;
}
} }
isdn->mctx = mctx; isdn->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL && isdn->isdn != NULL) {
isc_mem_free(mctx, isdn->isdn);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -355,10 +355,6 @@ generic_tostruct_key(ARGS_TOSTRUCT) {
/* Data */ /* Data */
key->datalen = sr.length; key->datalen = sr.length;
key->data = mem_maybedup(mctx, sr.base, key->datalen); key->data = mem_maybedup(mctx, sr.base, key->datalen);
if (key->data == NULL) {
return (ISC_R_NOMEMORY);
}
key->mctx = mctx; key->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -384,10 +384,6 @@ tostruct_keydata(ARGS_TOSTRUCT) {
/* Data */ /* Data */
keydata->datalen = sr.length; keydata->datalen = sr.length;
keydata->data = mem_maybedup(mctx, sr.base, keydata->datalen); keydata->data = mem_maybedup(mctx, sr.base, keydata->datalen);
if (keydata->data == NULL) {
return (ISC_R_NOMEMORY);
}
keydata->mctx = mctx; keydata->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -521,27 +521,18 @@ tostruct_naptr(ARGS_TOSTRUCT) {
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
INSIST(naptr->flags_len <= r.length); INSIST(naptr->flags_len <= r.length);
naptr->flags = mem_maybedup(mctx, r.base, naptr->flags_len); naptr->flags = mem_maybedup(mctx, r.base, naptr->flags_len);
if (naptr->flags == NULL) {
goto cleanup;
}
isc_region_consume(&r, naptr->flags_len); isc_region_consume(&r, naptr->flags_len);
naptr->service_len = uint8_fromregion(&r); naptr->service_len = uint8_fromregion(&r);
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
INSIST(naptr->service_len <= r.length); INSIST(naptr->service_len <= r.length);
naptr->service = mem_maybedup(mctx, r.base, naptr->service_len); naptr->service = mem_maybedup(mctx, r.base, naptr->service_len);
if (naptr->service == NULL) {
goto cleanup;
}
isc_region_consume(&r, naptr->service_len); isc_region_consume(&r, naptr->service_len);
naptr->regexp_len = uint8_fromregion(&r); naptr->regexp_len = uint8_fromregion(&r);
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
INSIST(naptr->regexp_len <= r.length); INSIST(naptr->regexp_len <= r.length);
naptr->regexp = mem_maybedup(mctx, r.base, naptr->regexp_len); naptr->regexp = mem_maybedup(mctx, r.base, naptr->regexp_len);
if (naptr->regexp == NULL) {
goto cleanup;
}
isc_region_consume(&r, naptr->regexp_len); isc_region_consume(&r, naptr->regexp_len);
dns_name_init(&name, NULL); dns_name_init(&name, NULL);
@@ -550,18 +541,6 @@ tostruct_naptr(ARGS_TOSTRUCT) {
name_duporclone(&name, mctx, &naptr->replacement); name_duporclone(&name, mctx, &naptr->replacement);
naptr->mctx = mctx; naptr->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL && naptr->flags != NULL) {
isc_mem_free(mctx, naptr->flags);
}
if (mctx != NULL && naptr->service != NULL) {
isc_mem_free(mctx, naptr->service);
}
if (mctx != NULL && naptr->regexp != NULL) {
isc_mem_free(mctx, naptr->regexp);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -306,34 +306,17 @@ tostruct_nsec3(ARGS_TOSTRUCT) {
nsec3->salt_length = uint8_consume_fromregion(&region); nsec3->salt_length = uint8_consume_fromregion(&region);
INSIST(nsec3->salt_length <= region.length); INSIST(nsec3->salt_length <= region.length);
nsec3->salt = mem_maybedup(mctx, region.base, nsec3->salt_length); nsec3->salt = mem_maybedup(mctx, region.base, nsec3->salt_length);
if (nsec3->salt == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&region, nsec3->salt_length); isc_region_consume(&region, nsec3->salt_length);
nsec3->next_length = uint8_consume_fromregion(&region); nsec3->next_length = uint8_consume_fromregion(&region);
INSIST(nsec3->next_length <= region.length); INSIST(nsec3->next_length <= region.length);
nsec3->next = mem_maybedup(mctx, region.base, nsec3->next_length); nsec3->next = mem_maybedup(mctx, region.base, nsec3->next_length);
if (nsec3->next == NULL) {
goto cleanup;
}
isc_region_consume(&region, nsec3->next_length); isc_region_consume(&region, nsec3->next_length);
nsec3->len = region.length; nsec3->len = region.length;
nsec3->typebits = mem_maybedup(mctx, region.base, region.length); nsec3->typebits = mem_maybedup(mctx, region.base, region.length);
if (nsec3->typebits == NULL) {
goto cleanup;
}
nsec3->mctx = mctx; nsec3->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (nsec3->next != NULL) {
isc_mem_free(mctx, nsec3->next);
}
isc_mem_free(mctx, nsec3->salt);
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -243,9 +243,6 @@ tostruct_nsec3param(ARGS_TOSTRUCT) {
INSIST(nsec3param->salt_length == region.length); INSIST(nsec3param->salt_length == region.length);
nsec3param->salt = mem_maybedup(mctx, region.base, nsec3param->salt = mem_maybedup(mctx, region.base,
nsec3param->salt_length); nsec3param->salt_length);
if (nsec3param->salt == NULL) {
return (ISC_R_NOMEMORY);
}
isc_region_consume(&region, nsec3param->salt_length); isc_region_consume(&region, nsec3param->salt_length);
nsec3param->mctx = mctx; nsec3param->mctx = mctx;

View File

@@ -178,18 +178,8 @@ tostruct_nsec(ARGS_TOSTRUCT) {
nsec->len = region.length; nsec->len = region.length;
nsec->typebits = mem_maybedup(mctx, region.base, region.length); nsec->typebits = mem_maybedup(mctx, region.base, region.length);
if (nsec->typebits == NULL) {
goto cleanup;
}
nsec->mctx = mctx; nsec->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&nsec->next, mctx);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -108,10 +108,6 @@ tostruct_null(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
null->length = r.length; null->length = r.length;
null->data = mem_maybedup(mctx, r.base, r.length); null->data = mem_maybedup(mctx, r.base, r.length);
if (null->data == NULL) {
return (ISC_R_NOMEMORY);
}
null->mctx = mctx; null->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -257,18 +257,8 @@ tostruct_nxt(ARGS_TOSTRUCT) {
nxt->len = region.length; nxt->len = region.length;
nxt->typebits = mem_maybedup(mctx, region.base, region.length); nxt->typebits = mem_maybedup(mctx, region.base, region.length);
if (nxt->typebits == NULL) {
goto cleanup;
}
nxt->mctx = mctx; nxt->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&nxt->next, mctx);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -156,15 +156,8 @@ tostruct_openpgpkey(ARGS_TOSTRUCT) {
*/ */
sig->length = sr.length; sig->length = sr.length;
sig->keyring = mem_maybedup(mctx, sr.base, sig->length); sig->keyring = mem_maybedup(mctx, sr.base, sig->length);
if (sig->keyring == NULL) {
goto cleanup;
}
sig->mctx = mctx; sig->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -330,10 +330,6 @@ tostruct_opt(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
opt->length = r.length; opt->length = r.length;
opt->options = mem_maybedup(mctx, r.base, r.length); opt->options = mem_maybedup(mctx, r.base, r.length);
if (opt->options == NULL) {
return (ISC_R_NOMEMORY);
}
opt->offset = 0; opt->offset = 0;
opt->mctx = mctx; opt->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);

View File

@@ -501,18 +501,8 @@ tostruct_rrsig(ARGS_TOSTRUCT) {
*/ */
sig->siglen = sr.length; sig->siglen = sr.length;
sig->signature = mem_maybedup(mctx, sr.base, sig->siglen); sig->signature = mem_maybedup(mctx, sr.base, sig->siglen);
if (sig->signature == NULL) {
goto cleanup;
}
sig->mctx = mctx; sig->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&sig->signer, mctx);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -493,18 +493,8 @@ tostruct_sig(ARGS_TOSTRUCT) {
*/ */
sig->siglen = sr.length; sig->siglen = sr.length;
sig->signature = mem_maybedup(mctx, sr.base, sig->siglen); sig->signature = mem_maybedup(mctx, sr.base, sig->siglen);
if (sig->signature == NULL) {
goto cleanup;
}
sig->mctx = mctx; sig->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&sig->signer, mctx);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -214,10 +214,6 @@ tostruct_sink(ARGS_TOSTRUCT) {
/* Data */ /* Data */
sink->datalen = sr.length; sink->datalen = sr.length;
sink->data = mem_maybedup(mctx, sr.base, sink->datalen); sink->data = mem_maybedup(mctx, sr.base, sink->datalen);
if (sink->data == NULL) {
return (ISC_R_NOMEMORY);
}
sink->mctx = mctx; sink->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -218,10 +218,6 @@ tostruct_sshfp(ARGS_TOSTRUCT) {
sshfp->length = region.length; sshfp->length = region.length;
sshfp->digest = mem_maybedup(mctx, region.base, region.length); sshfp->digest = mem_maybedup(mctx, region.base, region.length);
if (sshfp->digest == NULL) {
return (ISC_R_NOMEMORY);
}
sshfp->mctx = mctx; sshfp->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -474,9 +474,6 @@ tostruct_tkey(ARGS_TOSTRUCT) {
*/ */
INSIST(tkey->keylen + 2U <= sr.length); INSIST(tkey->keylen + 2U <= sr.length);
tkey->key = mem_maybedup(mctx, sr.base, tkey->keylen); tkey->key = mem_maybedup(mctx, sr.base, tkey->keylen);
if (tkey->key == NULL) {
goto cleanup;
}
isc_region_consume(&sr, tkey->keylen); isc_region_consume(&sr, tkey->keylen);
/* /*
@@ -490,21 +487,8 @@ tostruct_tkey(ARGS_TOSTRUCT) {
*/ */
INSIST(tkey->otherlen <= sr.length); INSIST(tkey->otherlen <= sr.length);
tkey->other = mem_maybedup(mctx, sr.base, tkey->otherlen); tkey->other = mem_maybedup(mctx, sr.base, tkey->otherlen);
if (tkey->other == NULL) {
goto cleanup;
}
tkey->mctx = mctx; tkey->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
cleanup:
if (mctx != NULL) {
dns_name_free(&tkey->algorithm, mctx);
}
if (mctx != NULL && tkey->key != NULL) {
isc_mem_free(mctx, tkey->key);
}
return (ISC_R_NOMEMORY);
} }
static inline void static inline void

View File

@@ -231,10 +231,6 @@ generic_tostruct_tlsa(ARGS_TOSTRUCT) {
tlsa->length = region.length; tlsa->length = region.length;
tlsa->data = mem_maybedup(mctx, region.base, region.length); tlsa->data = mem_maybedup(mctx, region.base, region.length);
if (tlsa->data == NULL) {
return (ISC_R_NOMEMORY);
}
tlsa->mctx = mctx; tlsa->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -172,10 +172,6 @@ generic_tostruct_txt(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
txt->txt_len = r.length; txt->txt_len = r.length;
txt->txt = mem_maybedup(mctx, r.base, r.length); txt->txt = mem_maybedup(mctx, r.base, r.length);
if (txt->txt == NULL) {
return (ISC_R_NOMEMORY);
}
txt->offset = 0; txt->offset = 0;
txt->mctx = mctx; txt->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);

View File

@@ -240,10 +240,6 @@ tostruct_uri(ARGS_TOSTRUCT) {
*/ */
uri->tgt_len = sr.length; uri->tgt_len = sr.length;
uri->target = mem_maybedup(mctx, sr.base, sr.length); uri->target = mem_maybedup(mctx, sr.base, sr.length);
if (uri->target == NULL) {
return (ISC_R_NOMEMORY);
}
uri->mctx = mctx; uri->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -154,10 +154,6 @@ tostruct_x25(ARGS_TOSTRUCT) {
x25->x25_len = uint8_fromregion(&r); x25->x25_len = uint8_fromregion(&r);
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
x25->x25 = mem_maybedup(mctx, r.base, x25->x25_len); x25->x25 = mem_maybedup(mctx, r.base, x25->x25_len);
if (x25->x25 == NULL) {
return (ISC_R_NOMEMORY);
}
x25->mctx = mctx; x25->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -272,10 +272,6 @@ tostruct_zonemd(ARGS_TOSTRUCT) {
zonemd->length = region.length; zonemd->length = region.length;
zonemd->digest = mem_maybedup(mctx, region.base, region.length); zonemd->digest = mem_maybedup(mctx, region.base, region.length);
if (zonemd->digest == NULL) {
return (ISC_R_NOMEMORY);
}
zonemd->mctx = mctx; zonemd->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -295,10 +295,6 @@ tostruct_in_apl(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
apl->apl_len = r.length; apl->apl_len = r.length;
apl->apl = mem_maybedup(mctx, r.base, r.length); apl->apl = mem_maybedup(mctx, r.base, r.length);
if (apl->apl == NULL) {
return (ISC_R_NOMEMORY);
}
apl->offset = 0; apl->offset = 0;
apl->mctx = mctx; apl->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);

View File

@@ -234,10 +234,6 @@ tostruct_in_atma(ARGS_TOSTRUCT) {
isc_region_consume(&r, 1); isc_region_consume(&r, 1);
atma->atma_len = r.length; atma->atma_len = r.length;
atma->atma = mem_maybedup(mctx, r.base, r.length); atma->atma = mem_maybedup(mctx, r.base, r.length);
if (atma->atma == NULL) {
return (ISC_R_NOMEMORY);
}
atma->mctx = mctx; atma->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -152,10 +152,6 @@ tostruct_in_dhcid(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &region); dns_rdata_toregion(rdata, &region);
dhcid->dhcid = mem_maybedup(mctx, region.base, region.length); dhcid->dhcid = mem_maybedup(mctx, region.base, region.length);
if (dhcid->dhcid == NULL) {
return (ISC_R_NOMEMORY);
}
dhcid->mctx = mctx; dhcid->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -141,10 +141,6 @@ tostruct_in_eid(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
eid->eid_len = r.length; eid->eid_len = r.length;
eid->eid = mem_maybedup(mctx, r.base, r.length); eid->eid = mem_maybedup(mctx, r.base, r.length);
if (eid->eid == NULL) {
return (ISC_R_NOMEMORY);
}
eid->mctx = mctx; eid->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -141,10 +141,6 @@ tostruct_in_nimloc(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
nimloc->nimloc_len = r.length; nimloc->nimloc_len = r.length;
nimloc->nimloc = mem_maybedup(mctx, r.base, r.length); nimloc->nimloc = mem_maybedup(mctx, r.base, r.length);
if (nimloc->nimloc == NULL) {
return (ISC_R_NOMEMORY);
}
nimloc->mctx = mctx; nimloc->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -176,10 +176,6 @@ tostruct_in_nsap(ARGS_TOSTRUCT) {
dns_rdata_toregion(rdata, &r); dns_rdata_toregion(rdata, &r);
nsap->nsap_len = r.length; nsap->nsap_len = r.length;
nsap->nsap = mem_maybedup(mctx, r.base, r.length); nsap->nsap = mem_maybedup(mctx, r.base, r.length);
if (nsap->nsap == NULL) {
return (ISC_R_NOMEMORY);
}
nsap->mctx = mctx; nsap->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }

View File

@@ -1014,13 +1014,6 @@ generic_tostruct_in_svcb(ARGS_TOSTRUCT) {
svcb->svclen = region.length; svcb->svclen = region.length;
svcb->svc = mem_maybedup(mctx, region.base, region.length); svcb->svc = mem_maybedup(mctx, region.base, region.length);
if (svcb->svc == NULL) {
if (mctx != NULL) {
dns_name_free(&svcb->svcdomain, svcb->mctx);
}
return (ISC_R_NOMEMORY);
}
svcb->offset = 0; svcb->offset = 0;
svcb->mctx = mctx; svcb->mctx = mctx;

View File

@@ -323,9 +323,6 @@ tostruct_in_wks(ARGS_TOSTRUCT) {
isc_region_consume(&region, 1); isc_region_consume(&region, 1);
wks->map_len = region.length; wks->map_len = region.length;
wks->map = mem_maybedup(mctx, region.base, region.length); wks->map = mem_maybedup(mctx, region.base, region.length);
if (wks->map == NULL) {
return (ISC_R_NOMEMORY);
}
wks->mctx = mctx; wks->mctx = mctx;
return (ISC_R_SUCCESS); return (ISC_R_SUCCESS);
} }