diff --git a/CHANGES b/CHANGES index ce24256a99..6164c3a838 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2369. [bug] libbind: Array bounds overrun on read in bitncmp(). + [RT #18054] + 2368. [port] Linux: use libcap for capability management if possible. [RT# 18026] diff --git a/lib/bind/isc/bitncmp.c b/lib/bind/isc/bitncmp.c index 7f9a55f19e..06d3188c88 100644 --- a/lib/bind/isc/bitncmp.c +++ b/lib/bind/isc/bitncmp.c @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: bitncmp.c,v 1.3 2005/04/27 04:56:35 sra Exp $"; +static const char rcsid[] = "$Id: bitncmp.c,v 1.4 2008/05/12 00:17:27 marka Exp $"; #endif #include "port_before.h" @@ -48,7 +48,7 @@ bitncmp(const void *l, const void *r, int n) { b = n / 8; x = memcmp(l, r, b); - if (x) + if (x || (n % 8) == 0) return (x); lb = ((const u_char *)l)[b];