chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
General improvements; add cancel routine.
[adns]
/
src
/
parse.c
diff --git
a/src/parse.c
b/src/parse.c
index 46d76fa29c1858570b6dcdd0d051bd782d44e9d8..722d9e4e763f3146e4bfb1baaaeb0d28022230d0 100644
(file)
--- 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,
}
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;
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 (!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 (!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; i<labstart+lablen; i++) {
ch= dgram[i];
if (ch != '-' && !ctype_alpha(ch) && !ctype_digit(ch))
for (i= labstart+1; i<labstart+lablen; i++) {
ch= dgram[i];
if (ch != '-' && !ctype_alpha(ch) && !ctype_digit(ch))
- return adns_s_invaliddomain;
+ return adns_s_invalid
answer
domain;
}
if (!adns__vbuf_append(vb,dgram+labstart,lablen))
return adns_s_nolocalmem;
}
if (!adns__vbuf_append(vb,dgram+labstart,lablen))
return adns_s_nolocalmem;