From: Vladimír Čunát Date: Fri, 17 Apr 2020 09:14:12 +0000 (+0200) Subject: validator: stricter filtering of "failed" ranks from answer X-Git-Tag: v5.1.0~6^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=909dd67b2ed5062937bb3d1aef21e7b7ffed6af4;p=thirdparty%2Fknot-resolver.git 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. --- 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; }