fixed a dns packet check issue in dns.c
This commit is contained in:
parent
73eff3822b
commit
c5e8e902aa
@ -821,6 +821,7 @@ static int parse_answer_rr (mio_t* mio, mio_dns_rr_part_t rr_part, mio_oow_t pos
|
|||||||
soa->rname = (mio_bch_t*)pi->_rrdptr;
|
soa->rname = (mio_bch_t*)pi->_rrdptr;
|
||||||
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
||||||
|
|
||||||
|
if (MIO_UNLIKELY(pi->_end - pi->_ptr) < 20) goto oops;
|
||||||
MIO_MEMCPY (&soa->serial, pi->_ptr, 20);
|
MIO_MEMCPY (&soa->serial, pi->_ptr, 20);
|
||||||
soa->serial = mio_ntoh32(soa->serial);
|
soa->serial = mio_ntoh32(soa->serial);
|
||||||
soa->refresh = mio_ntoh32(soa->refresh);
|
soa->refresh = mio_ntoh32(soa->refresh);
|
||||||
@ -832,9 +833,9 @@ static int parse_answer_rr (mio_t* mio, mio_dns_rr_part_t rr_part, mio_oow_t pos
|
|||||||
{
|
{
|
||||||
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
||||||
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
if (parse_domain_name(mio, pi) <= -1) goto oops;
|
||||||
|
if (MIO_UNLIKELY(pi->_end - pi->_ptr) < 20) goto oops;
|
||||||
}
|
}
|
||||||
if (MIO_UNLIKELY(pi->_end - pi->_ptr) < 20) goto oops;
|
pi->_ptr += 20;
|
||||||
pi->_ptr += 20;
|
|
||||||
|
|
||||||
MIO_ASSERT (mio, pi->_ptr == xptr + dlen);
|
MIO_ASSERT (mio, pi->_ptr == xptr + dlen);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user