dname_reverse(d1, d1_len, d1_rev_arr);
dname_reverse(d2, d2_len, d2_rev_arr);
- int res = 0;
- while (res == 0 && d1_rev != NULL) {
- res = lf_cmp(d1_rev, d2_rev);
+ do {
+ int res = lf_cmp(d1_rev, d2_rev);
+ if (res != 0 || d1_rev[0] == '\0')
+ return res;
d1_rev = knot_dname_next_label(d1_rev);
d2_rev = knot_dname_next_label(d2_rev);
- }
-
- kr_require(res != 0 || d2_rev == NULL);
- return res;
+ } while (true);
}
/* DS is parent-side record, so the parent name needs to be covered. */
name = knot_dname_next_label(name);
}
- while (name) {
+ do {
struct kr_context *ctx_nc = (struct kr_context *)/*const-cast*/ctx;
if (kr_ta_get(ctx_nc->trust_anchors, name)) {
return name;
if (kr_ta_get(ctx_nc->negative_anchors, name)) {
return NULL;
}
- name = knot_dname_next_label(name);
- }
- return NULL;
+ if (name[0] == '\0') {
+ return NULL;
+ } else {
+ name = knot_dname_next_label(name);
+ }
+ } while (true);
}
/* @internal Create DS from DNSKEY, caller MUST free dst if successful. */
&& knot_dname_in_bailiwick(qry->sname, parent) >= 0) {
requested_name = knot_dname_next_label(parent);
}
- } else if ((qry->stype == KNOT_RRTYPE_DS) && (qry->sname[0] != '\0')) {
+ } else if ((qry->stype == KNOT_RRTYPE_DS) && (requested_name[0] != '\0')) {
/* If this is explicit DS query, start from encloser too. */
requested_name = knot_dname_next_label(requested_name);
}
if (state == KR_STATE_DONE || (state & KR_STATE_FAIL)) {
return state;
} else if (state == KR_STATE_CONSUME) {
+ kr_require(requested_name[0] != '\0');
requested_name = knot_dname_next_label(requested_name);
}
} while (state == KR_STATE_CONSUME);