From: Mark Andrews Date: Mon, 12 May 2008 00:17:27 +0000 (+0000) Subject: 2369. [bug] libbind: Array bounds overrun on read in bitncmp(). X-Git-Tag: v9.3.6b1~131^2~60 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=e1aeb1569a0ae08c97dd76acb00376e4246e59b8;p=thirdparty%2Fbind9.git 2369. [bug] libbind: Array bounds overrun on read in bitncmp(). [RT #18054] --- diff --git a/CHANGES b/CHANGES index ce24256a993..6164c3a8389 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 7f9a55f19e5..06d3188c886 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];