From: Mark Andrews Date: Fri, 26 Jun 2009 06:25:44 +0000 (+0000) Subject: 2618. [bug] The sdb and sdlz db_interator_seek() methods could X-Git-Tag: v9.6.1-P1^2^5~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be30c7f74e3540948fdb26e3eaa05e9152cd0a6e;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 53289f0acfe..2813f004386 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 03fca9ed63e..ab9ff1967f6 100644 --- a/lib/dns/sdb.c +++ b/lib/dns/sdb.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: sdb.c,v 1.66.48.2 2009/04/21 23:47:18 tbox Exp $ */ +/* $Id: sdb.c,v 1.66.48.3 2009/06/26 06:25:44 marka Exp $ */ /*! \file */ @@ -1458,9 +1458,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 89cd0eea2a7..5e5f7e3d7a2 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.18.50.2 2009/04/21 23:47:18 tbox Exp $ */ +/* $Id: sdlz.c,v 1.18.50.3 2009/06/26 06:25:44 marka Exp $ */ /*! \file */ @@ -1117,9 +1117,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); }