From 909dd67b2ed5062937bb3d1aef21e7b7ffed6af4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Fri, 17 Apr 2020 11:14:12 +0200 Subject: [PATCH] validator: stricter filtering of "failed" ranks from answer It appears possible that a KR_RANK_MISSING record might still get into answer in some edge cases, so let's be more defensive. See cce8d9355. --- lib/layer/validate.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/layer/validate.c b/lib/layer/validate.c index 2fa89d23d..96bb6033e 100644 --- a/lib/layer/validate.c +++ b/lib/layer/validate.c @@ -1180,12 +1180,14 @@ static int hide_bogus(kr_layer_t *ctx) { */ const ranked_rr_array_t *sel[] = kr_request_selected(ctx->req); for (knot_section_t sect = KNOT_ANSWER; sect <= KNOT_ADDITIONAL; ++sect) { - for (size_t i = 0; i < sel[sect]->len; ++i) { - ranked_rr_array_entry_t *e = sel[sect]->at[i]; - if (kr_rank_test(e->rank, KR_RANK_BOGUS)) { - e->to_wire = false; - } - } + for (size_t i = 0; i < sel[sect]->len; ++i) { + ranked_rr_array_entry_t *e = sel[sect]->at[i]; + e->to_wire = e->to_wire + && !kr_rank_test(e->rank, KR_RANK_INDET) + && !kr_rank_test(e->rank, KR_RANK_BOGUS) + && !kr_rank_test(e->rank, KR_RANK_MISMATCH) + && !kr_rank_test(e->rank, KR_RANK_MISSING); + } } return ctx->state; } -- 2.47.2