From: Alessio Podda Date: Mon, 23 Feb 2026 10:40:06 +0000 (+0100) Subject: Do not update the case on unchanged rdatasets X-Git-Tag: v9.20.20~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04c52148bbf10e734b522e845b859b8ba9f8fd7f;p=thirdparty%2Fbind9.git Do not update the case on unchanged rdatasets Fix an assertion failure on unchanged rdataset during IXFR. --- diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index ae09403435c..445f63f58ee 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -5347,9 +5347,12 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, rds, options, &ardataset, ctx->nsec DNS__DB_FLARG_PASS); switch (result) { case ISC_R_SUCCESS: + if (dns_rdataset_isassociated(&ardataset)) { + dns_rdataset_setownercase(&ardataset, name); + } + break; case DNS_R_UNCHANGED: case DNS_R_NXRRSET: - dns_rdataset_setownercase(&ardataset, name); CHECK(result); break; default: @@ -5373,9 +5376,12 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, op == DNS_DIFFOP_ADDRESIGN); if (result == ISC_R_SUCCESS && is_resign) { - isc_stdtime_t resign; - resign = dns_rdataset_minresign(&ardataset); - dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, resign); + if (dns_rdataset_isassociated(&ardataset)) { + isc_stdtime_t resign; + resign = dns_rdataset_minresign(&ardataset); + dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, + resign); + } } cleanup: