- static const char *const (expectdomain[])= { DNS_INADDR_ARPA };
- char *ep;
- const char *ed;
- char labbuf[4];
- int l;
-
- if (labnum < 4) {
- if (lablen<=0 || lablen>3) return adns_s_querydomainwrong;
- memcpy(labbuf, label, lablen);
- labbuf[lablen]= 0;
- cls->ptr.ipv[3-labnum]= strtoul(labbuf,&ep,10);
- if (*ep) return adns_s_querydomainwrong;
- if (lablen>1 && *label=='0') return adns_s_querydomainwrong;
- } else if (labnum < 4 + sizeof(expectdomain)/sizeof(*expectdomain)) {
- ed= expectdomain[labnum-4];
- l= strlen(ed);
- if (lablen != l || memcmp(label, ed, l)) return adns_s_querydomainwrong;
+ if (lablen) {
+ if (adns__revparse_label(&cls->ptr, labnum, label,lablen))
+ return adns_s_querydomainwrong;