diff options
author | richard.freedman%sun.com <devnull@localhost> | 2006-05-18 19:10:14 +0000 |
---|---|---|
committer | richard.freedman%sun.com <devnull@localhost> | 2006-05-18 19:10:14 +0000 |
commit | a50ddf6d7484b18a5240a1bca5b4c0dc60a3cf1d (patch) | |
tree | f9e6b45a60584c787a19c343c6cfdbe7685a7eae | |
parent | 4dbeaec5728473eaffed1e288b47362ad62bc0c1 (diff) | |
download | nss-hg-a50ddf6d7484b18a5240a1bca5b4c0dc60a3cf1d.tar.gz |
Use PKIXERRORNUM, rather thana String, to indicate module to be logged (in
Logger calls). Thus typos will be caught at compile time rather than during
execution.
6 files changed, 74 insertions, 120 deletions
diff --git a/security/nss/cmd/libpkix/pkix/top/validatechain_NB/test_validatechain_NB.c b/security/nss/cmd/libpkix/pkix/top/validatechain_NB/test_validatechain_NB.c index 1a30c0895..9b175cb54 100644 --- a/security/nss/cmd/libpkix/pkix/top/validatechain_NB/test_validatechain_NB.c +++ b/security/nss/cmd/libpkix/pkix/top/validatechain_NB/test_validatechain_NB.c @@ -145,30 +145,30 @@ PKIX_Error *loggerCallback( PKIX_Logger *logger, PKIX_PL_String *message, PKIX_UInt32 logLevel, - PKIX_PL_String *logComponent, + PKIX_ERRORNUM logComponent, void *plContext) { #define resultSize 150 - char *comp = NULL; char *msg = NULL; char result[resultSize]; PKIX_TEST_STD_VARS(); msg = PKIX_String2ASCII(message, plContext); - comp = PKIX_String2ASCII(logComponent, plContext); PR_snprintf(result, resultSize, - "Logging %s (%s): %s", levels[logLevel], comp, msg); + "Logging %s (%s): %s", + levels[logLevel], + PKIX_ERRORNAMES[logComponent], + msg); subTest(result); cleanup: PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(msg, plContext)); - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(comp, plContext)); PKIX_TEST_RETURN(); } void testLogErrors( - char *module, + PKIX_ERRORNUM module, PKIX_UInt32 loggingLevel, PKIX_List *loggers, void *plContext) @@ -180,10 +180,8 @@ void testLogErrors( PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_Create (loggerCallback, NULL, &logger, plContext)); - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create - (PKIX_ESCASCII, module, 0, &component, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent - (logger, component, plContext)); + (logger, module, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetMaxLoggingLevel (logger, loggingLevel, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_List_AppendItem @@ -322,10 +320,14 @@ int main(int argc, char *argv[]){ PKIX_TEST_EXPECT_NO_ERROR (PKIX_List_Create(&loggers, plContext)); - testLogErrors("VALIDATE", 2, loggers, plContext); - testLogErrors("CERTCHAINCHECKER", 2, loggers, plContext); - testLogErrors("LDAPDEFAULTCLIENT", 2, loggers, plContext); - testLogErrors("CERTSTORE", 2, loggers, plContext); + testLogErrors + (PKIX_VALIDATE_ERROR, 2, loggers, plContext); + testLogErrors + (PKIX_CERTCHAINCHECKER_ERROR, 2, loggers, plContext); + testLogErrors + (PKIX_LDAPDEFAULTCLIENT_ERROR, 2, loggers, plContext); + testLogErrors + (PKIX_CERTSTORE_ERROR, 2, loggers, plContext); PKIX_TEST_EXPECT_NO_ERROR(PKIX_SetLoggers(loggers, plContext)); diff --git a/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c b/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c index 5953c588a..7db7df85d 100755 --- a/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c +++ b/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c @@ -59,7 +59,7 @@ PKIX_Error *testLoggerCallback( PKIX_Logger *logger, PKIX_PL_String *message, PKIX_UInt32 logLevel, - PKIX_PL_String *logComponent, + PKIX_ERRORNUM logComponent, void *plContext) { char *comp = NULL; @@ -70,9 +70,8 @@ PKIX_Error *testLoggerCallback( PKIX_TEST_STD_VARS(); msg = PKIX_String2ASCII(message, plContext); - comp = PKIX_String2ASCII(logComponent, plContext); PR_snprintf(result, 100, "Logging %s (%s): %s", - levels[logLevel], comp, msg); + levels[logLevel], PKIX_ERRORNAMES[logComponent], msg); subTest(result); callCount++; @@ -83,7 +82,6 @@ PKIX_Error *testLoggerCallback( cleanup: PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(msg, plContext)); - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(comp, plContext)); PKIX_TEST_RETURN(); } @@ -91,7 +89,7 @@ PKIX_Error *testLoggerCallback2( PKIX_Logger *logger, PKIX_PL_String *message, PKIX_UInt32 logLevel, - PKIX_PL_String *logComponent, + PKIX_ERRORNUM logComponent, void *plContext) { char *comp = NULL; @@ -101,14 +99,12 @@ PKIX_Error *testLoggerCallback2( PKIX_TEST_STD_VARS(); msg = PKIX_String2ASCII(message, plContext); - comp = PKIX_String2ASCII(logComponent, plContext); PR_snprintf(result, 100, "Logging %s (%s): %s", - levels[logLevel], comp, msg); + levels[logLevel], PKIX_ERRORNAMES[logComponent], msg); subTest(result); cleanup: PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(msg, plContext)); - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_Free(comp, plContext)); PKIX_TEST_RETURN(); } @@ -161,8 +157,8 @@ cleanup: void testComponent(PKIX_Logger *logger) { - PKIX_PL_String *compName = NULL; - PKIX_PL_String *compNameReturn = NULL; + PKIX_ERRORNUM compName = (PKIX_ERRORNUM)NULL; + PKIX_ERRORNUM compNameReturn = (PKIX_ERRORNUM)NULL; PKIX_Boolean cmpResult = PKIX_FALSE; PKIX_TEST_STD_VARS(); @@ -170,32 +166,24 @@ testComponent(PKIX_Logger *logger) PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLoggingComponent (logger, &compName, plContext)); - if (compName != NULL) { + if (compName != (PKIX_ERRORNUM)NULL) { testError("Incorrect Logger Component returned. expect <NULL>"); } - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create - (PKIX_ESCASCII, "LIST", 0, &compName, plContext)); - - subTest("PKIX_Logger_SetLoggingComponent"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent - (logger, compName, plContext)); + (logger, PKIX_LIST_ERROR, plContext)); subTest("PKIX_Logger_GetLoggingComponent"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_GetLoggingComponent (logger, &compNameReturn, plContext)); - testEqualsHelper - ((PKIX_PL_Object *) compName, - (PKIX_PL_Object *) compNameReturn, - PKIX_TRUE, - plContext); + if (compNameReturn != PKIX_LIST_ERROR) { + testError("Incorrect Logger Component returned."); + } cleanup: - PKIX_TEST_DECREF_AC(compName); - PKIX_TEST_DECREF_AC(compNameReturn); PKIX_TEST_RETURN(); } @@ -235,14 +223,13 @@ testLogger(PKIX_Logger *logger, PKIX_Logger *logger2) { PKIX_List *loggerList = NULL; PKIX_List *checkList = NULL; - PKIX_PL_String *compName = NULL; PKIX_UInt32 length; PKIX_Boolean cmpResult = PKIX_FALSE; char *expectedAscii = "[\n" "\tLogger: \n" "\tContext: (null)\n" "\tMaximum Level: 3\n" - "\tComponment Name: List\n" + "\tComponent Name: LIST\n" "]\n"; @@ -264,12 +251,9 @@ testLogger(PKIX_Logger *logger, PKIX_Logger *logger2) subTest("PKIX_SetLoggers"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_SetLoggers(loggerList, plContext)); - PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create - (PKIX_ESCASCII, "OBJECT", 0, &compName, plContext)); - subTest("PKIX_Logger_SetLoggingComponent"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent - (logger2, compName, plContext)); + (logger2, PKIX_MUTEX_ERROR, plContext)); subTest("PKIX_Logger_SetMaxLoggingLevel"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetMaxLoggingLevel @@ -319,7 +303,6 @@ cleanup: PKIX_TEST_DECREF_AC(loggerList); PKIX_TEST_DECREF_AC(checkList); - PKIX_TEST_DECREF_AC(compName); PKIX_TEST_RETURN(); } void diff --git a/security/nss/lib/libpkix/include/pkix_util.h b/security/nss/lib/libpkix/include/pkix_util.h index b2a8df42b..6357fcadb 100755 --- a/security/nss/lib/libpkix/include/pkix_util.h +++ b/security/nss/lib/libpkix/include/pkix_util.h @@ -127,7 +127,8 @@ extern "C" { * Integer value representing the log level for this entry. The higher the * level, the more detail. Must be non-NULL. * "logComponent" - * Address of String representing the log component for this entry. + * PKIXERRORNUM value (defined in pkixt.h) designating the log component + * for this entry. * "plContext" * Platform-specific context pointer. * THREAD SAFETY: @@ -145,7 +146,7 @@ typedef PKIX_Error * PKIX_Logger *logger, PKIX_PL_String *message, PKIX_UInt32 logLevel, - PKIX_PL_String *logComponent, + PKIX_ERRORNUM logComponent, void *plContext); /* @@ -310,7 +311,7 @@ PKIX_Logger_SetMaxLoggingLevel( * Address of Logger whose logging component is to be stored. * Must be non-NULL. * "pComponent" - * Address where object pointer will be stored. Must be non-NULL. + * Address where PKIXERRORNUM will be stored. Must be non-NULL. * "plContext" * Platform-specific context pointer. * THREAD SAFETY: @@ -324,7 +325,7 @@ PKIX_Logger_SetMaxLoggingLevel( PKIX_Error * PKIX_Logger_GetLoggingComponent( PKIX_Logger *logger, - PKIX_PL_String **pComponent, + PKIX_ERRORNUM *pComponent, void *plContext); /* @@ -332,16 +333,15 @@ PKIX_Logger_GetLoggingComponent( * DESCRIPTION: * * Sets the logging component of the Logger pointed to by "logger" with the - * String pointed to by "component". A NULL component matches all components. - * To match a small set of components, create a Logger for each. + * PKIXERRORNUM pointed to by "component". To match a small set of components, + * create a Logger for each. * * PARAMETERS: * "logger" * Address of Logger whose logging component is to be set. * Must be non-NULL. * "component" - * Address of String representing logging component to be set. - * If NULL, applies to all components. + * PKIXERRORNUM value representing logging component to be set. * "plContext" * Platform-specific context pointer. * THREAD SAFETY: @@ -355,10 +355,9 @@ PKIX_Logger_GetLoggingComponent( PKIX_Error * PKIX_Logger_SetLoggingComponent( PKIX_Logger *logger, - PKIX_PL_String *component, + PKIX_ERRORNUM component, void *plContext); - /* * FUNCTION: PKIX_GetLoggers * DESCRIPTION: diff --git a/security/nss/lib/libpkix/include/pkixt.h b/security/nss/lib/libpkix/include/pkixt.h index 0023f540b..9cdf17d39 100755 --- a/security/nss/lib/libpkix/include/pkixt.h +++ b/security/nss/lib/libpkix/include/pkixt.h @@ -346,10 +346,10 @@ typedef int PKIX_Boolean; #define ERRMACRO(type) PKIX_ ## type ## _ERROR -enum { +typedef enum { PKIX_ERRORS, PKIX_NUMERRORS /* This gets PKIX_NUMERRORS defined as the total number */ -}; +} PKIX_ERRORNUM; /* String Formats * diff --git a/security/nss/lib/libpkix/pkix/util/pkix_logger.c b/security/nss/lib/libpkix/pkix/util/pkix_logger.c index bed24fc07..006fd1682 100644 --- a/security/nss/lib/libpkix/pkix/util/pkix_logger.c +++ b/security/nss/lib/libpkix/pkix/util/pkix_logger.c @@ -119,7 +119,7 @@ pkix_Logger_Check( PKIX_List *pkixLoggersList, char *message, char *message2, - PKIX_UInt32 logComponent, + PKIX_ERRORNUM logComponent, PKIX_UInt32 currentLevel, void *plContext) { @@ -130,7 +130,6 @@ pkix_Logger_Check( PKIX_PL_String *messageString = NULL; PKIX_PL_String *message2String = NULL; PKIX_PL_String *msgString = NULL; - PKIX_PL_String *logComponentString = NULL; PKIX_Error *error = NULL; PKIX_Boolean needLogging = PKIX_FALSE; PKIX_UInt32 i, length; @@ -194,22 +193,6 @@ pkix_Logger_Check( message2String); if (error) { goto cleanup; } - /* - * Convert component to String : see pkixt.h for reason that we have to - * use PKIX_NUMERRORS. - */ - if (logComponent >= PKIX_NUMERRORS) { - goto cleanup; - } - - error = PKIX_PL_String_Create - (PKIX_ESCASCII, - (void *)PKIX_ERRORNAMES[logComponent], - 0, - &logComponentString, - plContext); - if (error) { goto cleanup; } - /* Go through the Logger list */ error = PKIX_List_GetLength(pkixLoggersList, &length, plContext); @@ -227,7 +210,7 @@ pkix_Logger_Check( /* Intended logging level less or equal than the max */ needLogging = (currentLevel <= logger->maxLevel); - if (needLogging && logger->callback) { + if (needLogging && (logger->callback)) { /* * We separate Logger into two lists based on log level @@ -238,17 +221,16 @@ pkix_Logger_Check( needLogging = needLogging && (currentLevel <= PKIX_LOGGER_LEVEL_WARNING); } else if (pkixLoggersList == pkixLoggersDebugTrace) { - needLogging = needLogging && + needLogging = needLogging && (currentLevel > PKIX_LOGGER_LEVEL_WARNING); } - if (needLogging && logger->logComponent) { - error = PKIX_PL_Object_Equals( - (PKIX_PL_Object *) logComponentString, - (PKIX_PL_Object *) logger->logComponent, - &needLogging, - plContext); - if (error) { goto cleanup; } + if (needLogging) { + if (logComponent == logger->logComponent) { + needLogging = PKIX_TRUE; + } else { + needLogging = PKIX_FALSE; + } } if (needLogging) { @@ -256,11 +238,10 @@ pkix_Logger_Check( (logger, msgString, currentLevel, - logComponentString, + logComponent, plContext); if (error) { goto cleanup; } } - } error = PKIX_PL_Object_DecRef @@ -292,11 +273,6 @@ cleanup: ((PKIX_PL_Object *)msgString, plContext); } - if (logComponentString) { - error = PKIX_PL_Object_DecRef - ((PKIX_PL_Object *)logComponentString, plContext); - } - if (logger) { error = PKIX_PL_Object_DecRef ((PKIX_PL_Object *)logger, plContext); @@ -341,7 +317,7 @@ pkix_Logger_Destroy( logger->callback = NULL; PKIX_DECREF(logger->context); - PKIX_DECREF(logger->logComponent); + logger->logComponent = (PKIX_ERRORNUM)NULL; cleanup: @@ -362,6 +338,7 @@ pkix_Logger_ToString( char *asciiFormat = NULL; PKIX_PL_String *formatString = NULL; PKIX_PL_String *contextString = NULL; + PKIX_PL_String *componentString = NULL; PKIX_PL_String *loggerString = NULL; PKIX_ENTER(LOGGER, "pkix_Logger_ToString_Helper"); @@ -378,7 +355,7 @@ pkix_Logger_ToString( "\tLogger: \n" "\tContext: %s\n" "\tMaximum Level: %d\n" - "\tComponment Name: %s\n" + "\tComponent Name: %s\n" "]\n"; PKIX_CHECK(PKIX_PL_String_Create @@ -392,13 +369,21 @@ pkix_Logger_ToString( PKIX_TOSTRING(logger->context, &contextString, plContext, "PKIX_PL_Object_ToString failed"); + PKIX_CHECK(PKIX_PL_String_Create + (PKIX_ESCASCII, + (void *)PKIX_ERRORNAMES[logger->logComponent], + 0, + &componentString, + plContext), + "PKIX_PL_String_Create failed"); + PKIX_CHECK(PKIX_PL_Sprintf (&loggerString, plContext, formatString, contextString, logger->maxLevel, - logger->logComponent), + componentString), "PKIX_PL_Sprintf failed"); *pString = loggerString; @@ -461,6 +446,10 @@ pkix_Logger_Equals( goto cleanup; } + if (firstLogger->logComponent != secondLogger->logComponent) { + goto cleanup; + } + PKIX_EQUALS (firstLogger->context, secondLogger->context, @@ -476,13 +465,6 @@ pkix_Logger_Equals( goto cleanup; } - PKIX_EQUALS - ((PKIX_PL_Object *)firstLogger->logComponent, - (PKIX_PL_Object *)secondLogger->logComponent, - &cmpResult, - plContext, - "PKIX_PL_Object_Equals failed"); - *pResult = cmpResult; cleanup: @@ -515,13 +497,8 @@ pkix_Logger_Hashcode( PKIX_HASHCODE(logger->context, &tempHash, plContext, "PKIX_PL_Object_Hashcode failed"); - hash = (PKIX_UInt32) logger->callback + tempHash << 7 + - logger->maxLevel; - - PKIX_HASHCODE(logger->logComponent, &tempHash, plContext, - "PKIX_PL_Object_Hashcode failed"); - - hash = hash << 7 + tempHash; + hash = ((((PKIX_UInt32) logger->callback + tempHash) << 7) + + logger->maxLevel << 7) + (PKIX_UInt32)logger->logComponent; *pHashcode = hash; @@ -569,11 +546,7 @@ pkix_Logger_Duplicate( plContext, "PKIX_PL_Object_Duplicate failed"); - PKIX_DUPLICATE - (logger->logComponent, - &dupLogger->logComponent, - plContext, - "PKIX_PL_Object_Duplicate failed"); + dupLogger->logComponent = logger->logComponent; *pNewObject = (PKIX_PL_Object *) dupLogger; @@ -644,7 +617,7 @@ PKIX_Logger_Create( logger->callback = callback; logger->maxLevel = 0; - logger->logComponent = NULL; + logger->logComponent = (PKIX_ERRORNUM)NULL; PKIX_INCREF(loggerContext); logger->context = loggerContext; @@ -737,13 +710,12 @@ cleanup: PKIX_Error * PKIX_Logger_GetLoggingComponent( PKIX_Logger *logger, - PKIX_PL_String **pComponent, + PKIX_ERRORNUM *pComponent, void *plContext) { PKIX_ENTER(LOGGER, "PKIX_Logger_GetLoggingComponent"); PKIX_NULLCHECK_TWO(logger, pComponent); - PKIX_INCREF(logger->logComponent); *pComponent = logger->logComponent; PKIX_RETURN(LOGGER); @@ -755,14 +727,12 @@ PKIX_Logger_GetLoggingComponent( PKIX_Error * PKIX_Logger_SetLoggingComponent( PKIX_Logger *logger, - PKIX_PL_String *component, + PKIX_ERRORNUM component, void *plContext) { PKIX_ENTER(LOGGER, "PKIX_Logger_SetLoggingComponent"); PKIX_NULLCHECK_ONE(logger); - PKIX_DECREF(logger->logComponent); - PKIX_INCREF(component); logger->logComponent = component; PKIX_RETURN(LOGGER); @@ -891,7 +861,7 @@ PKIX_SetLoggers( "PKIX_PL_MonitorLock_Enter failed"); locked = PKIX_TRUE; - /* Disable tracing, etc. to avoid recursion and deadlock */ + /* Disable tracing, etc. to avoid recursion and deadlock */ savedPkixLoggersDebugTrace = pkixLoggersDebugTrace; pkixLoggersDebugTrace = NULL; savedPkixLoggersErrors = pkixLoggersErrors; diff --git a/security/nss/lib/libpkix/pkix/util/pkix_logger.h b/security/nss/lib/libpkix/pkix/util/pkix_logger.h index 1996b1947..890f4611d 100644 --- a/security/nss/lib/libpkix/pkix/util/pkix_logger.h +++ b/security/nss/lib/libpkix/pkix/util/pkix_logger.h @@ -58,7 +58,7 @@ struct PKIX_LoggerStruct { PKIX_Logger_LogCallback callback; PKIX_PL_Object *context; PKIX_UInt32 maxLevel; - PKIX_PL_String *logComponent; + PKIX_ERRORNUM logComponent; }; PKIX_Error * @@ -66,7 +66,7 @@ pkix_Logger_Check( PKIX_List *pkixLoggersList, char *message, char *message2, - PKIX_UInt32 logComponent, + PKIX_ERRORNUM logComponent, PKIX_UInt32 maxLevel, void *plContext); |