diff options
Diffstat (limited to 'lib/isc/netaddr.c')
-rw-r--r-- | lib/isc/netaddr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/isc/netaddr.c b/lib/isc/netaddr.c index 0940df1713e5..dcbfba42eae8 100644 --- a/lib/isc/netaddr.c +++ b/lib/isc/netaddr.c @@ -235,11 +235,12 @@ isc_netaddr_prefixok(const isc_netaddr_t *na, unsigned int prefixlen) { nbytes = prefixlen / 8; nbits = prefixlen % 8; if (nbits != 0) { + INSIST(nbytes < ipbytes); if ((p[nbytes] & (0xff>>nbits)) != 0U) return (ISC_R_FAILURE); nbytes++; } - if (memcmp(p + nbytes, zeros, ipbytes - nbytes) != 0) + if (nbytes < ipbytes && memcmp(p + nbytes, zeros, ipbytes - nbytes) != 0) return (ISC_R_FAILURE); return (ISC_R_SUCCESS); } |