From: Mark Andrews Date: Fri, 26 Jun 2009 06:25:20 +0000 (+0000) Subject: 2618. [bug] The sdb and sdlz db_interator_seek() methods could X-Git-Tag: v9.4.3-P1~6^2~12 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=786252d2757f1bc6ae02552757169ecb576fe0d0;p=thirdparty%2Fbind9.git 2618. [bug] The sdb and sdlz db_interator_seek() methods could loop infinitely. [RT #19847] --- diff --git a/CHANGES b/CHANGES index f0a21efdc3f..85ce41ff632 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2618. [bug] The sdb and sdlz db_interator_seek() methods could + loop infinitely. [RT #19847] + 2617. [bug] ifconfig.sh failed to emit an error message when run from the wrong location. [RT #19375] diff --git a/lib/dns/sdb.c b/lib/dns/sdb.c index d2b5b341c8b..972b72a985f 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdb.c,v 1.45.18.18 2009/04/21 23:46:03 tbox Exp $ */ +/* $Id: sdb.c,v 1.45.18.19 2009/06/26 06:25:20 marka Exp $ */ /*! \file */ @@ -1445,9 +1445,11 @@ dbiterator_seek(dns_dbiterator_t *iterator, dns_name_t *name) { sdb_dbiterator_t *sdbiter = (sdb_dbiterator_t *)iterator; sdbiter->current = ISC_LIST_HEAD(sdbiter->nodelist); - while (sdbiter->current != NULL) + while (sdbiter->current != NULL) { if (dns_name_equal(sdbiter->current->name, name)) return (ISC_R_SUCCESS); + sdbiter->current = ISC_LIST_NEXT(sdbiter->current, link); + } return (ISC_R_NOTFOUND); } diff --git a/lib/dns/sdlz.c b/lib/dns/sdlz.c index 952f168be2a..6c9a521b05f 100644 --- a/lib/dns/sdlz.c +++ b/lib/dns/sdlz.c @@ -50,7 +50,7 @@ * USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdlz.c,v 1.2.2.13 2009/04/21 23:46:03 tbox Exp $ */ +/* $Id: sdlz.c,v 1.2.2.14 2009/06/26 06:25:20 marka Exp $ */ /*! \file */ @@ -1106,9 +1106,11 @@ dbiterator_seek(dns_dbiterator_t *iterator, dns_name_t *name) { sdlz_dbiterator_t *sdlziter = (sdlz_dbiterator_t *)iterator; sdlziter->current = ISC_LIST_HEAD(sdlziter->nodelist); - while (sdlziter->current != NULL) + while (sdlziter->current != NULL) { if (dns_name_equal(sdlziter->current->name, name)) return (ISC_R_SUCCESS); + sdlziter->current = ISC_LIST_NEXT(sdlziter->current, link); + } return (ISC_R_NOTFOUND); }