Commit bf65f729 authored by Michał Kępień's avatar Michał Kępień

Do not call exit() upon record_nsec3() errors

Replace the fprintf() call inside record_nsec3() with a
zoneverify_log_error() call.  Remove the "mctx" argument of
record_nsec3() as it can be extracted from "vctx".

Modify one of the record_nsec3() call sites so that its errors are
properly handled.
parent 0d07de92
......@@ -407,8 +407,8 @@ chain_equal(struct nsec3_chain_fixed *e1, struct nsec3_chain_fixed *e2) {
}
static isc_result_t
record_nsec3(const unsigned char *rawhash, const dns_rdata_nsec3_t *nsec3,
isc_mem_t *mctx, isc_heap_t *chains)
record_nsec3(const vctx_t *vctx, const unsigned char *rawhash,
const dns_rdata_nsec3_t *nsec3, isc_heap_t *chains)
{
struct nsec3_chain_fixed *element;
size_t len;
......@@ -417,7 +417,7 @@ record_nsec3(const unsigned char *rawhash, const dns_rdata_nsec3_t *nsec3,
len = sizeof(*element) + nsec3->next_length * 2 + nsec3->salt_length;
element = isc_mem_get(mctx, len);
element = isc_mem_get(vctx->mctx, len);
if (element == NULL)
return (ISC_R_NOMEMORY);
memset(element, 0, len);
......@@ -433,9 +433,9 @@ record_nsec3(const unsigned char *rawhash, const dns_rdata_nsec3_t *nsec3,
memmove(cp, nsec3->next, nsec3->next_length);
result = isc_heap_insert(chains, element);
if (result != ISC_R_SUCCESS) {
fprintf(stderr, "isc_heap_insert failed: %s\n",
isc_result_totext(result));
isc_mem_put(mctx, element, len);
zoneverify_log_error(vctx, "isc_heap_insert failed: %s",
isc_result_totext(result));
isc_mem_put(vctx->mctx, element, len);
}
return (result);
}
......@@ -495,8 +495,7 @@ match_nsec3(const vctx_t *vctx, dns_name_t *name,
/*
* Record chain.
*/
result = record_nsec3(rawhash, &nsec3, vctx->mctx,
vctx->expected_chains);
result = record_nsec3(vctx, rawhash, &nsec3, vctx->expected_chains);
if (result != ISC_R_SUCCESS) {
zoneverify_log_error(vctx, "record_nsec3(): %s",
isc_result_totext(result));
......@@ -585,8 +584,10 @@ record_found(const vctx_t *vctx, dns_name_t *name, dns_dbnode_t *node,
isc_region_consume(&hashlabel, 1);
isc_buffer_init(&b, owner, sizeof(owner));
result = isc_base32hex_decoderegion(&hashlabel, &b);
if (result != ISC_R_SUCCESS)
if (result != ISC_R_SUCCESS) {
result = ISC_R_SUCCESS;
goto cleanup;
}
for (result = dns_rdataset_first(&rdataset);
result == ISC_R_SUCCESS;
......@@ -607,14 +608,18 @@ record_found(const vctx_t *vctx, dns_name_t *name, dns_dbnode_t *node,
/*
* Record chain.
*/
result = record_nsec3(owner, &nsec3, vctx->mctx,
vctx->found_chains);
check_result(result, "record_nsec3()");
result = record_nsec3(vctx, owner, &nsec3, vctx->found_chains);
if (result != ISC_R_SUCCESS) {
zoneverify_log_error(vctx, "record_nsec3(): %s",
isc_result_totext(result));
goto cleanup;
}
}
result = ISC_R_SUCCESS;
cleanup:
dns_rdataset_disassociate(&rdataset);
return (ISC_R_SUCCESS);
return (result);
}
static isc_result_t
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment