From ccac4151a34cf512b0e330c3c6b4f63b9845d8d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Vavru=C5=A1a?= <marek.vavrusa@nic.cz> Date: Tue, 29 Sep 2015 23:07:23 +0200 Subject: [PATCH] =?UTF-8?q?lib/validate:=20fixed=20cases=20when=20the=20cu?= =?UTF-8?q?t=20wasn=E2=80=99t=20updated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this could happen if the query contained a CNAME with AA=0, or missing mandatory DS in previous NS query --- lib/layer/validate.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/layer/validate.c b/lib/layer/validate.c index 9fb3f3c38..d544d79d1 100644 --- a/lib/layer/validate.c +++ b/lib/layer/validate.c @@ -349,6 +349,9 @@ static int validate(knot_layer_t *ctx, knot_pkt_t *pkt) const knot_dname_t *sig_name = first_rrsig_signer_name(pkt); if (use_signatures && key_own && sig_name && !knot_dname_is_equal(key_own, sig_name)) { DEBUG_MSG(qry, ">< cut changed, needs revalidation\n"); + if (knot_dname_is_sub(sig_name, qry->zone_cut.name)) { + qry->zone_cut.name = knot_dname_copy(sig_name, &req->pool); + } knot_wire_set_rcode(pkt->wire, KNOT_RCODE_SERVFAIL); /* Prevent caching */ qry->flags &= ~QUERY_RESOLVED; return KNOT_STATE_CONSUME; -- GitLab