From: Daniel Salzman Date: Mon, 3 Nov 2025 12:47:57 +0000 (+0100) Subject: events: add missing checks for empty zone + unification X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5a7d434aaf502e48b4b8c7e35bb7617d836d0203;p=thirdparty%2Fknot-dns.git events: add missing checks for empty zone + unification --- diff --git a/src/knot/events/handlers/dnskey_sync.c b/src/knot/events/handlers/dnskey_sync.c index 6ee381f383..ec162a5389 100644 --- a/src/knot/events/handlers/dnskey_sync.c +++ b/src/knot/events/handlers/dnskey_sync.c @@ -360,7 +360,7 @@ int event_dnskey_sync(conf_t *conf, zone_t *zone) assert(zone); if (zone_contents_is_empty(zone->contents)) { - return KNOT_EOK; + return KNOT_EEMPTYZONE; } int timeout = conf->cache.srv_tcp_remote_io_timeout; diff --git a/src/knot/events/handlers/dnssec.c b/src/knot/events/handlers/dnssec.c index 585e7dc47b..e451ce20a5 100644 --- a/src/knot/events/handlers/dnssec.c +++ b/src/knot/events/handlers/dnssec.c @@ -58,6 +58,10 @@ int event_dnssec(conf_t *conf, zone_t *zone) { assert(zone); + if (zone_contents_is_empty(zone->contents)) { + return KNOT_EEMPTYZONE; + } + zone_sign_reschedule_t resch = { 0 }; zone_sign_roll_flags_t r_flags = KEY_ROLL_ALLOW_ALL; int sign_flags = 0; diff --git a/src/knot/events/handlers/ds_check.c b/src/knot/events/handlers/ds_check.c index 4a7734516c..2a9a5a50f0 100644 --- a/src/knot/events/handlers/ds_check.c +++ b/src/knot/events/handlers/ds_check.c @@ -8,6 +8,12 @@ int event_ds_check(conf_t *conf, zone_t *zone) { + assert(zone); + + if (zone_contents_is_empty(zone->contents)) { + return KNOT_EEMPTYZONE; + } + kdnssec_ctx_t ctx = { 0 }; int ret = kdnssec_ctx_init(conf, &ctx, zone->name, zone_kaspdb(zone), NULL); diff --git a/src/knot/events/handlers/ds_push.c b/src/knot/events/handlers/ds_push.c index 97a488f898..1c53b993fb 100644 --- a/src/knot/events/handlers/ds_push.c +++ b/src/knot/events/handlers/ds_push.c @@ -217,7 +217,7 @@ int event_ds_push(conf_t *conf, zone_t *zone) assert(zone); if (zone_contents_is_empty(zone->contents)) { - return KNOT_EOK; + return KNOT_EEMPTYZONE; } int timeout = conf->cache.srv_tcp_remote_io_timeout; diff --git a/src/knot/events/handlers/flush.c b/src/knot/events/handlers/flush.c index d26bc8e30f..024ac7e336 100644 --- a/src/knot/events/handlers/flush.c +++ b/src/knot/events/handlers/flush.c @@ -11,11 +11,10 @@ int event_flush(conf_t *conf, zone_t *zone) { - assert(conf); assert(zone); if (zone_contents_is_empty(zone->contents)) { - return KNOT_EOK; + return KNOT_EEMPTYZONE; } return zone_flush_journal(conf, zone, true); diff --git a/src/knot/events/handlers/load.c b/src/knot/events/handlers/load.c index be476a1de9..0ca539f720 100644 --- a/src/knot/events/handlers/load.c +++ b/src/knot/events/handlers/load.c @@ -52,6 +52,8 @@ static int upd_add_rem(const knot_rrset_t *rr, bool add, void *ctx) int event_load(conf_t *conf, zone_t *zone) { + assert(zone); + zone_update_t up = { 0 }; zone_contents_t *journal_conts = NULL, *zf_conts = NULL; bool old_contents_exist = (zone->contents != NULL), zone_in_journal_exists = false; diff --git a/src/knot/events/handlers/notify.c b/src/knot/events/handlers/notify.c index d4e5ad805d..1b9a7a7fe2 100644 --- a/src/knot/events/handlers/notify.c +++ b/src/knot/events/handlers/notify.c @@ -133,12 +133,12 @@ int event_notify(conf_t *conf, zone_t *zone) { assert(zone); - bool failed = false; - if (zone_contents_is_empty(zone->contents)) { - return KNOT_EOK; + return KNOT_EEMPTYZONE; } + bool failed = false; + // NOTIFY content int timeout = conf->cache.srv_tcp_remote_io_timeout; rcu_read_lock(); diff --git a/src/knot/events/handlers/validate.c b/src/knot/events/handlers/validate.c index 52f1d2a297..617b4bb73c 100644 --- a/src/knot/events/handlers/validate.c +++ b/src/knot/events/handlers/validate.c @@ -10,6 +10,12 @@ int event_validate(conf_t *conf, zone_t *zone) { + assert(zone); + + if (zone_contents_is_empty(zone->contents)) { + return KNOT_EEMPTYZONE; + } + zone_update_t fake_upd = { .zone = zone, .new_cont = zone->contents,