From: Ivana Krumlová Date: Thu, 4 Jul 2019 15:06:02 +0000 (+0200) Subject: prefill: check correct origin attribute X-Git-Tag: v4.1.0~5^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9b38be40e9d02f3eb9dc90e3069e95aaea8164e1;p=thirdparty%2Fknot-resolver.git prefill: check correct origin attribute name of SOA record must be "." --- diff --git a/daemon/zimport.c b/daemon/zimport.c index 5bcc54c54..cf1021efd 100644 --- a/daemon/zimport.c +++ b/daemon/zimport.c @@ -687,14 +687,9 @@ static int zi_state_parsing(zs_scanner_t *s) } zone_import_ctx_t *z_import = (zone_import_ctx_t *) s->process.data; empty = false; - if (z_import->origin == 0) { - z_import->origin = knot_dname_copy(s->zone_origin, - &z_import->pool); - } else if (!knot_dname_is_equal(z_import->origin, s->zone_origin)) { - kr_log_error("[zscanner] line: %"PRIu64 - ": zone origin changed unexpectedly\n", - s->line_counter); - return -1; + if (s->r_type == 6) { + z_import->origin = knot_dname_copy(s->r_owner, + &z_import->pool); } break; case ZS_STATE_ERROR: @@ -714,6 +709,10 @@ static int zi_state_parsing(zs_scanner_t *s) kr_log_error("[zimport] empty zone file\n"); return -1; } + if (!((zone_import_ctx_t *) s->process.data)->origin) { + kr_log_error("[zimport] zone file doesn't contain SOA record\n"); + return -1; + } return (s->error.counter == 0) ? 0 : -1; default: kr_log_error("[zscanner] line: %"PRIu64