]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
server: fix possible use after free if member zone is reused when full reload
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 25 Jul 2025 06:19:50 +0000 (08:19 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Fri, 25 Jul 2025 06:19:50 +0000 (08:19 +0200)
src/knot/zone/zonedb-load.c

index d376b526ae7bdad7c2dc3c1ac4fd40121f92b3ab..f9fa0b2188cc90ada82c6ae438f1b5c93b653a1b 100644 (file)
@@ -289,7 +289,11 @@ static zone_t *reuse_member_zone(zone_t *zone, server_t *server, conf_t *conf,
                        break; // reload the member zone
                case CAT_UPD_INVALID:
                case CAT_UPD_MINOR:
-                       return zone; // reuse the member zone
+                       if (mode & (RELOAD_COMMIT | RELOAD_CATALOG)) {
+                               return zone; // reuse the member zone
+                       } else {
+                               break; // reload the member zone
+                       }
                case CAT_UPD_REM:
                        return NULL; // remove the member zone
                case CAT_UPD_ADD: // cannot add existing member