X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=src%2Ftypes.c;h=966f57015d2416e00ec5d3efacbebf1f3a3332ff;hp=3708ad5686834e12ea04418cc58188ccfed055c4;hb=05fc6b3a75b4013064318637d6367bf9ddf96563;hpb=401c256aeefcfa8b23668bee45b3174792df4f62 diff --git a/src/types.c b/src/types.c index 3708ad5..966f570 100644 --- a/src/types.c +++ b/src/types.c @@ -1036,12 +1036,14 @@ static adns_status qdpl_srv(adns_state ads, return adns_s_ok; } -static adns_status pap_srv_begin(const parseinfo *pai, int cbyte, int max, +static adns_status pap_srv_begin(const parseinfo *pai, int *cbyte_io, int max, adns_rr_srvraw *rrp /* might be adns_rr_srvha* */) { const byte *dgram= pai->dgram; - int ti; - if (cbyte+6 > max) return adns_s_invaliddata; + int ti, cbyte; + + cbyte= *cbyte_io; + if ((*cbyte_io += 6) > max) return adns_s_invaliddata; rrp->priority= GET_W(cbyte, ti); rrp->weight= GET_W(cbyte, ti); @@ -1054,7 +1056,7 @@ static adns_status pa_srvraw(const parseinfo *pai, int cbyte, adns_rr_srvraw *rrp= datap; adns_status st; - st= pap_srv_begin(pai,cbyte,max,datap); + st= pap_srv_begin(pai,&cbyte,max,datap); if (st) return st; st= pap_domain(pai, &cbyte, max, &rrp->host, @@ -1070,7 +1072,7 @@ static adns_status pa_srvha(const parseinfo *pai, int cbyte, adns_rr_srvha *rrp= datap; adns_status st; - st= pap_srv_begin(pai,cbyte,max,datap); if (st) return st; + st= pap_srv_begin(pai,&cbyte,max,datap); if (st) return st; st= pap_hostaddr(pai, &cbyte, max, &rrp->ha); if (st) return st; if (cbyte != max) return adns_s_invaliddata; return adns_s_ok;