X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/86e7b8d96483d2f55561aa76ac96e7663840b796..c7836bc9e8b0ed6a04e9008545e29de410d9693e:/src/parse.c diff --git a/src/parse.c b/src/parse.c index 46d76fa..bb08883 100644 --- a/src/parse.c +++ b/src/parse.c @@ -111,7 +111,7 @@ adns_status adns__findlabel_next(findlabel_state *fls, } adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, - vbuf *vb, int flags, + vbuf *vb, adns_queryflags flags, const byte *dgram, int dglen, int *cbyte_io, int max) { findlabel_state fls; @@ -127,15 +127,16 @@ adns_status adns__parse_domain(adns_state ads, int serv, adns_query qu, if (!lablen) break; if (vb->used) if (!adns__vbuf_append(vb,".",1)) return adns_s_nolocalmem; - if (flags & adns_qf_anyquote) { + if (flags & pdf_quoteok) { if (!vbuf__append_quoted1035(vb,dgram+labstart,lablen)) return adns_s_nolocalmem; } else { - if (!ctype_alpha(dgram[labstart])) return adns_s_invaliddomain; + ch= dgram[labstart]; + if (!ctype_alpha(ch) && !ctype_digit(ch)) return adns_s_invalidanswerdomain; for (i= labstart+1; icname_dgram) { - return findrr_intern(qu,serv, + return findrr_anychk(qu,serv, dgram,dglen,cbyte_io, type_r,class_r,rdlen_r,rdstart_r, qu->query_dgram,qu->query_dglen,DNS_HDRSIZE, ownermatchedquery_r); } else { - return findrr_intern(qu,serv, + return findrr_anychk(qu,serv, dgram,dglen,cbyte_io, type_r,class_r,rdlen_r,rdstart_r, qu->cname_dgram,qu->cname_dglen,qu->cname_begin,