diff --git a/CHANGES b/CHANGES index 4a0a4b9261..011ea826ce 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,9 @@ + 277. [bug] isc_log_categorybyname() and isc_log_modulebyname() + would fail to find the first member of any category + or module array apart from the internal defaults. + Thus, for example, the "notify" category was improperly + configured by named. + 276. [bug] dig now supports maximum sized TCP messages. 275. [bug] The definition of lwres_gai_strerror() was missing diff --git a/lib/isc/log.c b/lib/isc/log.c index 67a9fc3e8f..93df1fe816 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -15,7 +15,7 @@ * SOFTWARE. */ -/* $Id: log.c,v 1.37 2000/06/02 18:15:45 bwelling Exp $ */ +/* $Id: log.c,v 1.38 2000/06/23 17:52:20 tale Exp $ */ /* Principal Authors: DCL */ @@ -557,13 +557,15 @@ isc_log_registercategories(isc_log_t *lctx, isc_logcategory_t categories[]) { * Adjust the last (NULL) pointer of the already registered * categories to point to the incoming array. */ - for (catp = lctx->categories; catp->name != NULL; catp++) + for (catp = lctx->categories; catp->name != NULL; ) if (catp->id == UINT_MAX) /* * The name pointer points to the next array. * Ick. */ DE_CONST(catp->name, catp); + else + catp++; catp->name = (void *)categories; catp->id = UINT_MAX; @@ -583,16 +585,18 @@ isc_log_categorybyname(isc_log_t *lctx, const char *name) { REQUIRE(VALID_CONTEXT(lctx)); REQUIRE(name != NULL); - for (catp = lctx->categories; catp->name != NULL; catp++) + for (catp = lctx->categories; catp->name != NULL; ) if (catp->id == UINT_MAX) /* * catp is neither modified nor returned to the * caller, so removing its const qualifier is ok. */ DE_CONST(catp->name, catp); - else + else { if (strcmp(catp->name, name) == 0) return (catp); + catp++; + } return (NULL); } @@ -620,13 +624,15 @@ isc_log_registermodules(isc_log_t *lctx, isc_logmodule_t modules[]) { * Adjust the last (NULL) pointer of the already registered * modules to point to the incoming array. */ - for (modp = lctx->modules; modp->name != NULL; modp++) + for (modp = lctx->modules; modp->name != NULL; ) if (modp->id == UINT_MAX) /* * The name pointer points to the next array. * Ick. */ DE_CONST(modp->name, modp); + else + modp++; modp->name = (void *)modules; modp->id = UINT_MAX; @@ -646,16 +652,18 @@ isc_log_modulebyname(isc_log_t *lctx, const char *name) { REQUIRE(VALID_CONTEXT(lctx)); REQUIRE(name != NULL); - for (modp = lctx->modules; modp->name != NULL; modp++) + for (modp = lctx->modules; modp->name != NULL; ) if (modp->id == UINT_MAX) /* - * catp is neither modified nor returned to the + * modp is neither modified nor returned to the * caller, so removing its const qualifier is ok. */ DE_CONST(modp->name, modp); - else + else { if (strcmp(modp->name, name) == 0) return (modp); + modp++; + } return (NULL); }