summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtchang%redhat.com <devnull@localhost>2005-01-04 18:20:00 +0000
committerwtchang%redhat.com <devnull@localhost>2005-01-04 18:20:00 +0000
commit189a2e69ede1fce42311a40b4b0fb5bced3d27fd (patch)
treed9232a66a5fd795502c359300e38c74bd5bfd99e
parent209f4b4176edd5d4e1676643f71b0dd6dd231954 (diff)
downloadnss-hg-189a2e69ede1fce42311a40b4b0fb5bced3d27fd.tar.gz
Bugzilla bug 273624: fixed the regression (from NSS 3.3.x) that
NSS_Initialize didn't report the SEC_ERROR_BAD_DATABASE error if the NSS databases haven't been created. r=nelsonb,relyea. Modified Files: pk11wrap/pk11err.c pk11wrap/pk11load.c softoken/dbinit.c softoken/pkcs11n.h
-rw-r--r--security/nss/lib/pk11wrap/pk11err.c2
-rw-r--r--security/nss/lib/pk11wrap/pk11load.c4
-rw-r--r--security/nss/lib/softoken/dbinit.c9
-rw-r--r--security/nss/lib/softoken/pkcs11n.h3
4 files changed, 10 insertions, 8 deletions
diff --git a/security/nss/lib/pk11wrap/pk11err.c b/security/nss/lib/pk11wrap/pk11err.c
index 589ec8265..28559d8d8 100644
--- a/security/nss/lib/pk11wrap/pk11err.c
+++ b/security/nss/lib/pk11wrap/pk11err.c
@@ -122,6 +122,8 @@ PK11_MapError(CK_RV rv) {
MAPERROR(CKR_WRAPPING_KEY_SIZE_RANGE, SEC_ERROR_INVALID_KEY)
MAPERROR(CKR_WRAPPING_KEY_TYPE_INCONSISTENT, SEC_ERROR_INVALID_KEY)
MAPERROR(CKR_VENDOR_DEFINED, SEC_ERROR_LIBRARY_FAILURE)
+ MAPERROR(CKR_NETSCAPE_CERTDB_FAILED, SEC_ERROR_BAD_DATABASE)
+ MAPERROR(CKR_NETSCAPE_KEYDB_FAILED, SEC_ERROR_BAD_DATABASE)
#ifdef PK11_ERROR_USE_ARRAY
diff --git a/security/nss/lib/pk11wrap/pk11load.c b/security/nss/lib/pk11wrap/pk11load.c
index a94e6cbf0..0906fc5f7 100644
--- a/security/nss/lib/pk11wrap/pk11load.c
+++ b/security/nss/lib/pk11wrap/pk11load.c
@@ -111,7 +111,9 @@ secmod_ModuleInit(SECMODModule *mod)
}
crv = PK11_GETTAB(mod)->C_Initialize(pInitArgs);
if (crv != CKR_OK) {
- if (pInitArgs == NULL) {
+ if (pInitArgs == NULL ||
+ crv == CKR_NETSCAPE_CERTDB_FAILED ||
+ crv == CKR_NETSCAPE_KEYDB_FAILED) {
PORT_SetError(PK11_MapError(crv));
return SECFailure;
}
diff --git a/security/nss/lib/softoken/dbinit.c b/security/nss/lib/softoken/dbinit.c
index 7d3cca6cd..f59e5ca69 100644
--- a/security/nss/lib/softoken/dbinit.c
+++ b/security/nss/lib/softoken/dbinit.c
@@ -118,11 +118,6 @@ pk11_keydb_name_cb(void *arg, int dbVersion)
return dbname;
}
-/* for now... we need to define vendor specific codes here.
- */
-#define CKR_CERTDB_FAILED CKR_DEVICE_ERROR
-#define CKR_KEYDB_FAILED CKR_DEVICE_ERROR
-
const char *
pk11_EvaluateConfigDir(const char *configdir,char **appName)
{
@@ -151,7 +146,7 @@ pk11_OpenCertDB(const char * configdir, const char *prefix, PRBool readOnly,
NSSLOWCERTCertDBHandle **certdbPtr)
{
NSSLOWCERTCertDBHandle *certdb = NULL;
- CK_RV crv = CKR_CERTDB_FAILED;
+ CK_RV crv = CKR_NETSCAPE_CERTDB_FAILED;
SECStatus rv;
char * name = NULL;
char * appName = NULL;
@@ -205,7 +200,7 @@ pk11_OpenKeyDB(const char * configdir, const char *prefix, PRBool readOnly,
PR_smprintf_free(name);
if (appName) PORT_Free(appName);
if (keydb == NULL)
- return CKR_KEYDB_FAILED;
+ return CKR_NETSCAPE_KEYDB_FAILED;
*keydbPtr = keydb;
return CKR_OK;
diff --git a/security/nss/lib/softoken/pkcs11n.h b/security/nss/lib/softoken/pkcs11n.h
index b4109f89f..f85509da6 100644
--- a/security/nss/lib/softoken/pkcs11n.h
+++ b/security/nss/lib/softoken/pkcs11n.h
@@ -180,6 +180,9 @@ static const char CKT_CVS_ID[] = "@(#) $RCSfile$ $Revision$ $Date$ $Name$";
*/
#define CKR_NETSCAPE (CKM_VENDOR_DEFINED|NSSCK_VENDOR_NETSCAPE)
+#define CKR_NETSCAPE_CERTDB_FAILED (CKR_NETSCAPE + 1)
+#define CKR_NETSCAPE_KEYDB_FAILED (CKR_NETSCAPE + 2)
+
/*
* Trust info
*