The setfilename() function uses case-insensitive strcasestr() when
matching the possible tokens, but then one of the token parsers
uses case-sensitive INSIST checks which can assert when, for example,
matching '%X' and INSIST only accepts '%x'.
The case-insensitivity is documented, which means it's the parser
that needs to be fixed, not the matcher.
Convert the character to lowercase before checking the token's
validity.
dns_name_copy(dns_rootname, target);
labels = dns_name_countlabels(names->zonename);
- labeltokidx = token->pos[token->len - 1];
+ labeltokidx = isc_ascii_tolower(token->pos[token->len - 1]);
if (token->len == 2) {
/*
* %z, %y, %x pattern