size_t len)
{
uint8_t* datstart = sldns_buffer_current(buf)-len+2;
+ size_t firstlen;
switch(ntohs(rrset->rk.type)) {
case LDNS_RR_TYPE_NXT:
case LDNS_RR_TYPE_NS:
case LDNS_RR_TYPE_SOA:
/* two names after another */
query_dname_tolower(datstart);
- query_dname_tolower(datstart +
- dname_valid(datstart, len-2));
+ firstlen = dname_valid(datstart, len-2);
+ if(firstlen && firstlen < len-2)
+ query_dname_tolower(datstart + firstlen);
return;
case LDNS_RR_TYPE_RT:
case LDNS_RR_TYPE_AFSDB:
return;
datstart += 2;
query_dname_tolower(datstart);
- query_dname_tolower(datstart +
- dname_valid(datstart, len-2-2));
+ firstlen = dname_valid(datstart, len-2-2);
+ if(firstlen && firstlen < len-2-2)
+ query_dname_tolower(datstart + firstlen);
return;
case LDNS_RR_TYPE_NAPTR:
if(len < 2+4)