From 13eaef2df27683658868c3828c18880d7419a16a Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Sun, 17 Oct 1999 22:40:05 +0000 Subject: [PATCH] more INSISTs for proper range before passing integers to isc_buffer_putuint16 --- lib/dns/rdataset.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/dns/rdataset.c b/lib/dns/rdataset.c index d0450552ab..3068fb7583 100644 --- a/lib/dns/rdataset.c +++ b/lib/dns/rdataset.c @@ -337,8 +337,11 @@ dns_rdataset_towire(dns_rdataset_t *rdataset, dns_compress_localinvalidate(cctx); if (result != DNS_R_SUCCESS) goto rollback; + INSIST((target->used >= rdlen.used + 2) && + (target->used - rdlen.used - 2 < 65536)); isc_buffer_putuint16(&rdlen, - target->used - rdlen.used - 2); + (isc_uint16_t)(target->used - + rdlen.used - 2)); } count++; @@ -354,7 +357,8 @@ dns_rdataset_towire(dns_rdataset_t *rdataset, return (DNS_R_SUCCESS); rollback: - dns_compress_rollback(cctx, savedbuffer.used); + INSIST(savedbuffer.used < 65536); + dns_compress_rollback(cctx, (isc_uint16_t)savedbuffer.used); *countp = 0; *target = savedbuffer;