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