diff options
author | richard.freedman%sun.com <devnull@localhost> | 2006-05-17 17:02:52 +0000 |
---|---|---|
committer | richard.freedman%sun.com <devnull@localhost> | 2006-05-17 17:02:52 +0000 |
commit | 8596fd97a9e9737222c33e08d37ec71114afb400 (patch) | |
tree | fe21978fe8a43552075e780ea86ad67ce4f879cf | |
parent | 33116cfec60df8ec70321145ed3f6093cf0b2fbe (diff) | |
download | nss-hg-8596fd97a9e9737222c33e08d37ec71114afb400.tar.gz |
Use a macro to replace separate lists of errors in pkixt.h, pkix_error.c, and
pkix_logger.c, to avoid the hazards of depending on synchronization by
human effort. This macro is invoked to define error numbers in pkixt.h,
and is redefined in pkix_error.c to initialize a corresponding array of
strings. Pkix_logger.c now uses the same array, rather than its own
slightly different one.
5 files changed, 100 insertions, 232 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 ae6428d40..1a30c0895 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 @@ -322,10 +322,10 @@ 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("VALIDATE", 2, loggers, plContext); + testLogErrors("CERTCHAINCHECKER", 2, loggers, plContext); + testLogErrors("LDAPDEFAULTCLIENT", 2, loggers, plContext); + testLogErrors("CERTSTORE", 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 f3c5a3d21..5953c588a 100755 --- a/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c +++ b/security/nss/cmd/libpkix/pkix/util/logger/test_logger.c @@ -175,7 +175,7 @@ testComponent(PKIX_Logger *logger) } PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create - (PKIX_ESCASCII, "List", 0, &compName, plContext)); + (PKIX_ESCASCII, "LIST", 0, &compName, plContext)); subTest("PKIX_Logger_SetLoggingComponent"); @@ -265,7 +265,7 @@ testLogger(PKIX_Logger *logger, PKIX_Logger *logger2) PKIX_TEST_EXPECT_NO_ERROR(PKIX_SetLoggers(loggerList, plContext)); PKIX_TEST_EXPECT_NO_ERROR(PKIX_PL_String_Create - (PKIX_ESCASCII, "Object", 0, &compName, plContext)); + (PKIX_ESCASCII, "OBJECT", 0, &compName, plContext)); subTest("PKIX_Logger_SetLoggingComponent"); PKIX_TEST_EXPECT_NO_ERROR(PKIX_Logger_SetLoggingComponent diff --git a/security/nss/lib/libpkix/include/pkixt.h b/security/nss/lib/libpkix/include/pkixt.h index 1cb7d0134..0023f540b 100755 --- a/security/nss/lib/libpkix/include/pkixt.h +++ b/security/nss/lib/libpkix/include/pkixt.h @@ -267,87 +267,89 @@ typedef int PKIX_Boolean; /* Error Codes * - * Every PKIX_Error is associated with an integer error code. Therefore - * this list must correspond, one-to-one, with the strings in the table - * "const char *PKIX_ERRORNAMES[PKIX_NUMERRORS]" in pkix_error.c and the - * table "const char PKIX_COMPONENTNAMES[PKIX_NUMERRORS]" in pkix_logger.c. - * - * Also, those Error Codes that doesn't have association with Object Types - * defined earlier are sometimes used as the Object Type for the macro - * PKIX_ENTER(). This is because there are functions that are not associated - * with any defined Objects but need to relate to an Object Type. + * This list is used to define a set of PKIX_Errors, each associated with an + * integer error code. ERRMACRO is redefined to produce a corresponding set of + * strings in the table "const char *PKIX_ERRORNAMES[PKIX_NUMERRORS]" in + * pkix_error.c. For example, since the fifth ERRMACRO entry is MUTEX, then + * PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and PKIX_ERRORNAMES[4] is + * initialized in pkix_error.c with the value "MUTEX". */ -#define PKIX_OBJECT_ERROR ((PKIX_UInt32) 0) -#define PKIX_FATAL_ERROR ((PKIX_UInt32) 1) -#define PKIX_MEM_ERROR ((PKIX_UInt32) 2) -#define PKIX_ERROR_ERROR ((PKIX_UInt32) 3) -#define PKIX_MUTEX_ERROR ((PKIX_UInt32) 4) -#define PKIX_RWLOCK_ERROR ((PKIX_UInt32) 5) -#define PKIX_STRING_ERROR ((PKIX_UInt32) 6) -#define PKIX_OID_ERROR ((PKIX_UInt32) 7) -#define PKIX_LIST_ERROR ((PKIX_UInt32) 8) -#define PKIX_BYTEARRAY_ERROR ((PKIX_UInt32) 9) -#define PKIX_BIGINT_ERROR ((PKIX_UInt32) 10) -#define PKIX_HASHTABLE_ERROR ((PKIX_UInt32) 11) -#define PKIX_CERT_ERROR ((PKIX_UInt32) 12) -#define PKIX_X500NAME_ERROR ((PKIX_UInt32) 13) -#define PKIX_GENERALNAME_ERROR ((PKIX_UInt32) 14) -#define PKIX_PUBLICKEY_ERROR ((PKIX_UInt32) 15) -#define PKIX_DATE_ERROR ((PKIX_UInt32) 16) -#define PKIX_TRUSTANCHOR_ERROR ((PKIX_UInt32) 17) -#define PKIX_PROCESSINGPARAMS_ERROR ((PKIX_UInt32) 18) -#define PKIX_HTTPCLIENT_ERROR ((PKIX_UInt32) 19) -#define PKIX_VALIDATEPARAMS_ERROR ((PKIX_UInt32) 20) -#define PKIX_VALIDATE_ERROR ((PKIX_UInt32) 21) -#define PKIX_VALIDATERESULT_ERROR ((PKIX_UInt32) 22) -#define PKIX_CERTCHAINCHECKER_ERROR ((PKIX_UInt32) 23) -#define PKIX_CERTSELECTOR_ERROR ((PKIX_UInt32) 24) -#define PKIX_COMCERTSELPARAMS_ERROR ((PKIX_UInt32) 25) -#define PKIX_TARGETCERTCHECKERSTATE_ERROR ((PKIX_UInt32) 26) -#define PKIX_CERTBASICCONSTRAINTS_ERROR ((PKIX_UInt32) 27) -#define PKIX_CERTPOLICYQUALIFIER_ERROR ((PKIX_UInt32) 28) -#define PKIX_CERTPOLICYINFO_ERROR ((PKIX_UInt32) 29) -#define PKIX_CERTPOLICYNODE_ERROR ((PKIX_UInt32) 30) -#define PKIX_CERTPOLICYCHECKERSTATE_ERROR ((PKIX_UInt32) 31) -#define PKIX_LIFECYCLE_ERROR ((PKIX_UInt32) 32) -#define PKIX_BASICCONSTRAINTSCHECKERSTATE_ERROR ((PKIX_UInt32) 33) -#define PKIX_COMCRLSELPARAMS_ERROR ((PKIX_UInt32) 34) -#define PKIX_CERTSTORE_ERROR ((PKIX_UInt32) 35) -#define PKIX_COLLECTIONCERTSTORECONTEXT_ERROR ((PKIX_UInt32) 36) -#define PKIX_DEFAULTCRLCHECKERSTATE_ERROR ((PKIX_UInt32) 37) -#define PKIX_CRL_ERROR ((PKIX_UInt32) 38) -#define PKIX_CRLENTRY_ERROR ((PKIX_UInt32) 39) -#define PKIX_CRLSELECTOR_ERROR ((PKIX_UInt32) 40) -#define PKIX_CERTPOLICYMAP_ERROR ((PKIX_UInt32) 41) -#define PKIX_BUILD_ERROR ((PKIX_UInt32) 42) -#define PKIX_BUILDRESULT_ERROR ((PKIX_UInt32) 43) -#define PKIX_HTTPCERTSTORECONTEXT_ERROR ((PKIX_UInt32) 44) -#define PKIX_FORWARDBUILDERSTATE_ERROR ((PKIX_UInt32) 45) -#define PKIX_SIGNATURECHECKERSTATE_ERROR ((PKIX_UInt32) 46) -#define PKIX_CERTNAMECONSTRAINTS_ERROR ((PKIX_UInt32) 47) -#define PKIX_CERTNAMECONSTRAINTSCHECKERSTATE_ERROR ((PKIX_UInt32) 48) -#define PKIX_REVOCATIONCHECKER_ERROR ((PKIX_UInt32) 49) -#define PKIX_USERDEFINEDMODULES_ERROR ((PKIX_UInt32) 50) -#define PKIX_CONTEXT_ERROR ((PKIX_UInt32) 51) -#define PKIX_DEFAULTREVOCATIONCHECKER_ERROR ((PKIX_UInt32) 52) -#define PKIX_LDAPREQUEST_ERROR ((PKIX_UInt32) 53) -#define PKIX_LDAPRESPONSE_ERROR ((PKIX_UInt32) 54) -#define PKIX_LDAPCLIENT_ERROR ((PKIX_UInt32) 55) -#define PKIX_LDAPDEFAULTCLIENT_ERROR ((PKIX_UInt32) 56) -#define PKIX_SOCKET_ERROR ((PKIX_UInt32) 57) -#define PKIX_RESOURCELIMITS_ERROR ((PKIX_UInt32) 58) -#define PKIX_LOGGER_ERROR ((PKIX_UInt32) 59) -#define PKIX_MONITORLOCK_ERROR ((PKIX_UInt32) 60) -#define PKIX_INFOACCESS_ERROR ((PKIX_UInt32) 61) -#define PKIX_AIAMGR_ERROR ((PKIX_UInt32) 62) -#define PKIX_OCSPCHECKER_ERROR ((PKIX_UInt32) 63) -#define PKIX_OCSPREQUEST_ERROR ((PKIX_UInt32) 64) -#define PKIX_OCSPRESPONSE_ERROR ((PKIX_UInt32) 65) -#define PKIX_HTTPDEFAULTCLIENT_ERROR ((PKIX_UInt32) 66) - -/* YOU NEED TO UPDATE NEW ENTRY at pkix_error.c and pkix_logger.c */ -#define PKIX_NUMERRORS ((PKIX_UInt32) 67) +#define PKIX_ERRORS \ + ERRMACRO(OBJECT), \ + ERRMACRO(FATAL), \ + ERRMACRO(MEM), \ + ERRMACRO(ERROR), \ + ERRMACRO(MUTEX), \ + ERRMACRO(RWLOCK), \ + ERRMACRO(STRING), \ + ERRMACRO(OID), \ + ERRMACRO(LIST), \ + ERRMACRO(BYTEARRAY), \ + ERRMACRO(BIGINT), \ + ERRMACRO(HASHTABLE), \ + ERRMACRO(CERT), \ + ERRMACRO(X500NAME), \ + ERRMACRO(GENERALNAME), \ + ERRMACRO(PUBLICKEY), \ + ERRMACRO(DATE), \ + ERRMACRO(TRUSTANCHOR), \ + ERRMACRO(PROCESSINGPARAMS), \ + ERRMACRO(HTTPCLIENT), \ + ERRMACRO(VALIDATEPARAMS), \ + ERRMACRO(VALIDATE), \ + ERRMACRO(VALIDATERESULT), \ + ERRMACRO(CERTCHAINCHECKER), \ + ERRMACRO(CERTSELECTOR), \ + ERRMACRO(COMCERTSELPARAMS), \ + ERRMACRO(TARGETCERTCHECKERSTATE), \ + ERRMACRO(CERTBASICCONSTRAINTS), \ + ERRMACRO(CERTPOLICYQUALIFIER), \ + ERRMACRO(CERTPOLICYINFO), \ + ERRMACRO(CERTPOLICYNODE), \ + ERRMACRO(CERTPOLICYCHECKERSTATE), \ + ERRMACRO(LIFECYCLE), \ + ERRMACRO(BASICCONSTRAINTSCHECKERSTATE), \ + ERRMACRO(COMCRLSELPARAMS), \ + ERRMACRO(CERTSTORE), \ + ERRMACRO(COLLECTIONCERTSTORECONTEXT), \ + ERRMACRO(DEFAULTCRLCHECKERSTATE), \ + ERRMACRO(CRL), \ + ERRMACRO(CRLENTRY), \ + ERRMACRO(CRLSELECTOR), \ + ERRMACRO(CERTPOLICYMAP), \ + ERRMACRO(BUILD), \ + ERRMACRO(BUILDRESULT), \ + ERRMACRO(HTTPCERTSTORECONTEXT), \ + ERRMACRO(FORWARDBUILDERSTATE), \ + ERRMACRO(SIGNATURECHECKERSTATE), \ + ERRMACRO(CERTNAMECONSTRAINTS), \ + ERRMACRO(CERTNAMECONSTRAINTSCHECKERSTATE), \ + ERRMACRO(REVOCATIONCHECKER), \ + ERRMACRO(USERDEFINEDMODULES), \ + ERRMACRO(CONTEXT), \ + ERRMACRO(DEFAULTREVOCATIONCHECKER), \ + ERRMACRO(LDAPREQUEST), \ + ERRMACRO(LDAPRESPONSE), \ + ERRMACRO(LDAPCLIENT), \ + ERRMACRO(LDAPDEFAULTCLIENT), \ + ERRMACRO(SOCKET), \ + ERRMACRO(RESOURCELIMITS), \ + ERRMACRO(LOGGER), \ + ERRMACRO(MONITORLOCK), \ + ERRMACRO(INFOACCESS), \ + ERRMACRO(AIAMGR), \ + ERRMACRO(OCSPCHECKER), \ + ERRMACRO(OCSPREQUEST), \ + ERRMACRO(OCSPRESPONSE), \ + ERRMACRO(HTTPDEFAULTCLIENT) + +#define ERRMACRO(type) PKIX_ ## type ## _ERROR + +enum { + PKIX_ERRORS, + PKIX_NUMERRORS /* This gets PKIX_NUMERRORS defined as the total number */ +}; /* String Formats * diff --git a/security/nss/lib/libpkix/pkix/util/pkix_error.c b/security/nss/lib/libpkix/pkix/util/pkix_error.c index d7c937200..82f66def5 100755 --- a/security/nss/lib/libpkix/pkix/util/pkix_error.c +++ b/security/nss/lib/libpkix/pkix/util/pkix_error.c @@ -228,7 +228,6 @@ pkix_Error_ToString( PKIX_PL_String **pString, void *plContext) { - extern const char *PKIX_ERRORNAMES[PKIX_NUMERRORS]; PKIX_Error *error = NULL; PKIX_Error *cause = NULL; PKIX_PL_String *desc = NULL; @@ -291,9 +290,9 @@ pkix_Error_ToString( /* Create the Format String */ if (optCauseString != NULL) { - format = "*** %s - %s%s"; + format = "*** %s Error- %s%s"; } else { - format = "*** %s - %s"; + format = "*** %s Error- %s"; } /* Ensure that error code is known, otherwise default to Object */ @@ -365,81 +364,20 @@ pkix_Error_Hashcode( * descriptive name for an error code. This is used by the default * PKIX_PL_Error_ToString function. * - * Note: These default names are indexed by error type. Therefore, order of - * these default names MUST match the order of the error types in pkixt.h. - * For example, since PKIX_ERRORNAMES[2] = "Memory Error", then PKIX_MEM_ERROR - * must have the value 2 in pkixt.h + * Note: PKIX_ERRORNAMES is defined in pkixt.h as a list of error types. + * (More precisely, as a list of invocations of ERRMACRO(type).) The + * macro is expanded in pkixt.h to define error numbers, and here to + * provide corresponding strings. For example, since the fifth ERRMACRO + * entry is MUTEX, then PKIX_MUTEX_ERROR is defined in pkixt.h as 4, and + * PKIX_ERRORNAMES[4] is initialized here with the value "MUTEX". */ +#undef ERRMACRO +#define ERRMACRO(type) #type + const char * PKIX_ERRORNAMES[PKIX_NUMERRORS] = { - "Object Error", - "Fatal Error", - "Memory Error", - "Error Error", - "Mutex Error", - "RWLock Error", - "String Error", - "OID Error", - "List Error", - "ByteArray Error", - "BigInt Error", - "HashTable Error", - "Cert Error", - "X500Name Error", - "GeneralName Error", - "PublicKey Error", - "Date Error", - "TrustAnchor Error", - "ProcessingParams Error", - "HttpClient Error", - "ValidateParams Error", - "Validate Error", - "ValidateResult Error", - "CertChainChecker Error", - "CertSelector Error", - "ComCertSelParams Error", - "TargetCertCheckerState Error", - "CertBasicConstraints Error", - "CertPolicyQualifier Error", - "CertPolicyInfo Error", - "CertPolicyNode Error", - "CertPolicyCheckerState Error", - "Lifecycle Error", - "BasicConstraintsCheckerState Error", - "ComCRLSelParams Error", - "CertStore Error", - "CollectionCertStoreContext Error", - "DefaultCRLCheckerState Error", - "CRL Error", - "CRLEntry Error", - "CRLSelector Error", - "CertPolicyMap Error", - "Build Error", - "BuildResult Error", - "HttpCertStoreContext Error", - "ForwardBuilderState Error", - "SignatureCheckerState Error", - "CertNameConstraints Error", - "CertNameConstraintsCheckerState Error", - "RevocationChecker Error", - "User Defined Modules Error", - "Context Error", - "DefaultRevocationChecker Error", - "LdapRequest Error", - "LdapResponse Error", - "LdapClient Error", - "LdapDefaultClient Error", - "Socket Error", - "Resource Limits Error", - "Logger Error", - "MonitorLock Error", - "InfoAccess Error", - "AIAMgr Error", - "OcspChecker Error", - "OcspRequest Error", - "OcspResponse Error", - "HttpDefaultClient Error" + PKIX_ERRORS }; /* diff --git a/security/nss/lib/libpkix/pkix/util/pkix_logger.c b/security/nss/lib/libpkix/pkix/util/pkix_logger.c index 208e6f8f6..bed24fc07 100644 --- a/security/nss/lib/libpkix/pkix/util/pkix_logger.c +++ b/security/nss/lib/libpkix/pkix/util/pkix_logger.c @@ -79,78 +79,6 @@ PKIX_List *pkixLoggersDebugTrace = NULL; /* To ensure atomic update on pkixLoggers lists */ PKIX_PL_MonitorLock *pkixLoggerLock = NULL; -const char * -PKIX_COMPONENTNAMES[PKIX_NUMERRORS] = -{ - "Object", - "Fatal", - "Memory", - "Error", - "Mutex", - "RWLock", - "String", - "OID", - "List", - "ByteArray", - "BigInt", - "HashTable", - "Cert", - "X500Name", - "GeneralName", - "PublicKey", - "Date", - "TrustAnchor", - "ProcessingParams", - "HttpClient", - "ValidateParams", - "Validate", - "ValidateResult", - "CertChainChecker", - "CertSelector", - "ComCertSelParams", - "TargetCertCheckerState", - "CertBasicConstraints", - "CertPolicyQualifier", - "CertPolicyInfo", - "CertPolicyNode", - "CertPolicyCheckerState", - "Lifecycle", - "BasicConstraintsCheckerState", - "ComCRLSelParams", - "CertStore", - "CollectionCertStoreContext", - "DefaultCRLCheckerState", - "CRL", - "CRLEntry", - "CRLSelector", - "CertPolicyMap", - "Build", - "BuildResult", - "HttpCertStoreContext", - "ForwardBuilderState", - "SignatureCheckerState", - "CertNameConstraints", - "CertNameConstraintsCheckerState", - "RevocationChecker", - "User Defined Modules", - "Context", - "DefaultRevocationChecker", - "LdapRequest", - "LdapResponse", - "LdapClient", - "LdapDefaultClient", - "Socket", - "ResourceLimits", - "Logger", - "MonitorLock", - "InfoAccess", - "AIAMgr", - "OcspChecker", - "OcspRequest" - "OcspResponse", - "HttpDefaultClient" -}; - /* --Private-Functions-------------------------------------------- */ /* @@ -276,7 +204,7 @@ pkix_Logger_Check( error = PKIX_PL_String_Create (PKIX_ESCASCII, - (void *)PKIX_COMPONENTNAMES[logComponent], + (void *)PKIX_ERRORNAMES[logComponent], 0, &logComponentString, plContext); |