]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Do not update the case on unchanged rdatasets
authorAlessio Podda <alessio@isc.org>
Mon, 23 Feb 2026 10:40:06 +0000 (11:40 +0100)
committerAlessio Podda <alessio@isc.org>
Tue, 24 Feb 2026 12:04:19 +0000 (13:04 +0100)
Fix an assertion failure on unchanged rdataset during IXFR.

lib/dns/qpzone.c

index ae09403435c57f49fd37c709f5e0a5af919ba1b5..445f63f58ee342398e0b1c3cb5446f65ee8bad6c 100644 (file)
@@ -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: