summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrichard.freedman%sun.com <devnull@localhost>2006-05-17 17:02:52 +0000
committerrichard.freedman%sun.com <devnull@localhost>2006-05-17 17:02:52 +0000
commit8596fd97a9e9737222c33e08d37ec71114afb400 (patch)
treefe21978fe8a43552075e780ea86ad67ce4f879cf
parent33116cfec60df8ec70321145ed3f6093cf0b2fbe (diff)
downloadnss-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.
-rw-r--r--security/nss/cmd/libpkix/pkix/top/validatechain_NB/test_validatechain_NB.c8
-rwxr-xr-xsecurity/nss/cmd/libpkix/pkix/util/logger/test_logger.c4
-rwxr-xr-xsecurity/nss/lib/libpkix/include/pkixt.h160
-rwxr-xr-xsecurity/nss/lib/libpkix/pkix/util/pkix_error.c86
-rw-r--r--security/nss/lib/libpkix/pkix/util/pkix_logger.c74
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);