isc_time_t timer_start, timer_finish;
isc_time_t sign_start, sign_finish;
dns_dnsseckey_t *key;
- isc_result_t result;
+ isc_result_t result, vresult;
isc_log_t *log = NULL;
#ifdef USE_PKCS11
const char *engine = PKCS11_ENGINE;
postsign();
TIME_NOW(&sign_finish);
- if (!disable_zone_check)
- dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, mctx,
- ignore_kskflag, keyset_kskonly);
+ if (disable_zone_check) {
+ vresult = ISC_R_SUCCESS;
+ } else {
+ vresult = dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin,
+ mctx, ignore_kskflag,
+ keyset_kskonly);
+ if (vresult != ISC_R_SUCCESS) {
+ fprintf(output_stdout ? stderr : stdout,
+ "Zone verification failed (%s)\n",
+ isc_result_totext(vresult));
+ }
+ }
if (outputformat != dns_masterformat_text) {
dns_masterrawheader_t header;
check_result(result, "isc_stdio_close");
removefile = ISC_FALSE;
- result = isc_file_rename(tempfile, output);
- if (result != ISC_R_SUCCESS)
- fatal("failed to rename temp file to %s: %s",
- output, isc_result_totext(result));
-
- printf("%s\n", output);
+ if (vresult == ISC_R_SUCCESS) {
+ result = isc_file_rename(tempfile, output);
+ if (result != ISC_R_SUCCESS) {
+ fatal("failed to rename temp file to %s: %s",
+ output, isc_result_totext(result));
+ }
+ printf("%s\n", output);
+ } else {
+ isc_file_remove(tempfile);
+ }
}
dns_db_closeversion(gdb, &gversion, ISC_FALSE);
#ifdef _WIN32
DestroySockets();
#endif
- return (0);
+ return (vresult == ISC_R_SUCCESS ? 0 : 1);
}
result = dns_db_newversion(gdb, &gversion);
check_result(result, "dns_db_newversion()");
- dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, mctx,
- ignore_kskflag, keyset_kskonly);
+ result = dns_zoneverify_dnssec(NULL, gdb, gversion, gorigin, mctx,
+ ignore_kskflag, keyset_kskonly);
dns_db_closeversion(gdb, &gversion, ISC_FALSE);
dns_db_detach(&gdb);
(void) isc_app_finish();
- return (0);
+ return (result == ISC_R_SUCCESS ? 0 : 1);
}
}
}
-void
+isc_result_t
dns_zoneverify_dnssec(dns_zone_t *zone, dns_db_t *db, dns_dbversion_t *ver,
dns_name_t *origin, isc_mem_t *mctx,
isc_boolean_t ignore_kskflag,
result = vctx_init(&vctx, mctx, zone, db, ver, origin);
if (result != ISC_R_SUCCESS) {
- return;
+ return (result);
}
result = check_apex_rrsets(&vctx);
done:
vctx_destroy(&vctx);
+
+ return (result);
}