summaryrefslogtreecommitdiff
path: root/lib/isc/netaddr.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/isc/netaddr.c')
-rw-r--r--lib/isc/netaddr.c3
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);
}