Replace NSS with Pale Moon's

This commit is contained in:
wuggy 2026-06-29 21:29:25 +01:00
commit 8c2e376f94
2870 changed files with 1762232 additions and 1374220 deletions

View file

@ -4,9 +4,12 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
include manifest.mn
include $(CORE_DEPTH)/coreconf/config.mk
include config.mk
include $(CORE_DEPTH)/coreconf/rules.mk
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
ifdef NOTDEF # was ifdef MOZILLA_CLIENT
NSS_BUILD_CAPI = 1
@ -25,7 +28,6 @@ endif
# nssck.api: ck.api ckapi.perl
# $(PERL) ckapi.perl ck.api
export:: private_export
# can't do this in manifest.mn because OS_TARGET isn't defined there.
ifeq (,$(filter-out WINNT WIN95,$(OS_TARGET)))
@ -33,3 +35,5 @@ ifdef NSS_BUILD_CAPI
DIRS += capi
endif
endif
include $(CORE_DEPTH)/coreconf/rules.mk

View file

@ -5,7 +5,24 @@
include manifest.mn
include $(CORE_DEPTH)/coreconf/config.mk
include config.mk
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
# Needed for compilation of $(OBJDIR)/certdata.c
INCLUDES += -I.
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif
ifdef USE_GCOV
DSO_LDOPTS += --coverage
endif
EXTRA_LIBS = \
$(DIST)/lib/$(LIB_PREFIX)nssckfw.$(LIB_SUFFIX) \
@ -49,6 +66,5 @@ ifndef NSS_CERTDATA_TXT
NSS_CERTDATA_TXT = certdata.txt
endif
$(OBJDIR)/certdata.c: $(NSS_CERTDATA_TXT) certdata.perl
@$(MAKE_OBJDIR)
$(OBJDIR)/certdata.c: $(NSS_CERTDATA_TXT) certdata.perl | $$(@D)/d
$(PERL) certdata.perl $(NSS_CERTDATA_TXT) $@

View file

@ -30,7 +30,7 @@
{
'msvs_cygwin_shell': 0,
'action': [
'python',
'<(python)',
'certdata.py',
'certdata.txt',
'<@(_outputs)',

File diff suppressed because it is too large Load diff

View file

@ -1,38 +0,0 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Override TARGETS variable so that only shared libraries
# are specifed as dependencies within rules.mk.
#
TARGETS = $(SHARED_LIBRARY)
LIBRARY =
IMPORT_LIBRARY =
PROGRAM =
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
RES = $(OBJDIR)/$(LIBRARY_NAME).res
RESNAME = $(LIBRARY_NAME).rc
endif
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
# Needed for compilation of $(OBJDIR)/certdata.c
INCLUDES += -I.
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif
ifdef USE_GCOV
DSO_LDOPTS += --coverage
endif

View file

@ -5,10 +5,11 @@
CORE_DEPTH = ../../..
DIRS = testlib
DIRS = . testlib
testlib: .
MODULE = nss
MAPFILE = $(OBJDIR)/nssckbi.def
EXPORTS = \
nssckbi.h \
@ -30,3 +31,6 @@ CSRCS = \
REQUIRES = nspr
LIBRARY_NAME = nssckbi
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME).def
LIBRARY = $(NULL)
IMPORT_LIBRARY = $(NULL)

View file

@ -46,8 +46,8 @@
* It's recommend to switch back to 0 after having reached version 98/99.
*/
#define NSS_BUILTINS_LIBRARY_VERSION_MAJOR 2
#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 80
#define NSS_BUILTINS_LIBRARY_VERSION "2.80"
#define NSS_BUILTINS_LIBRARY_VERSION_MINOR 76
#define NSS_BUILTINS_LIBRARY_VERSION "2.76"
/* These version numbers detail the semantic changes to the ckfw engine. */
#define NSS_BUILTINS_HARDWARE_VERSION_MAJOR 1

View file

@ -4,8 +4,26 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
include manifest.mn
include $(CORE_DEPTH)/coreconf/config.mk
include config.mk
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
# Needed for compilation of $(OBJDIR)/certdata.c
INCLUDES += -I.
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif
ifdef USE_GCOV
DSO_LDOPTS += --coverage
endif
EXTRA_LIBS = \
$(DIST)/lib/$(LIB_PREFIX)nssckfw.$(LIB_SUFFIX) \
@ -38,6 +56,11 @@ EXTRA_SHARED_LIBS += \
$(NULL)
endif # OS_TARGET
SIMPLE_OBJS = $(notdir $(CSRCS:.c=$(OBJ_SUFFIX)))
OBJS = $(addprefix $(OBJDIR)/$(PROG_PREFIX), $(SIMPLE_OBJS))
vpath %c $(dir $(CSRCS)) # $(OBJDIR)
include $(CORE_DEPTH)/coreconf/rules.mk
CFLAGS += -I$(CORE_DEPTH)/lib/ckfw/builtins
@ -47,6 +70,6 @@ ifndef NSS_CERTDATA-TESTLIB_TXT
NSS_CERTDATA-TESTLIB_TXT = certdata-testlib.txt
endif
$(OBJDIR)/certdata-testlib.c: $(NSS_CERTDATA-TESTLIB_TXT)
@$(MAKE_OBJDIR)
$(OBJDIR)/certdata-testlib.c: $(NSS_CERTDATA-TESTLIB_TXT) | $$(@D)/d
$(PERL) ../certdata.perl $(NSS_CERTDATA-TESTLIB_TXT) $@

View file

@ -30,7 +30,7 @@
{
'msvs_cygwin_shell': 0,
'action': [
'python',
'<(python)',
'../certdata.py',
'certdata-testlib.txt',
'<@(_outputs)',
@ -47,7 +47,7 @@
}
],
'variables': {
'mapfile': '../nssckbi.def',
'mapfile': 'nssckbi-testlib.def',
'certdata-testlib_c': '<(INTERMEDIATE_DIR)/certdata-testlib.c',
}
}

View file

@ -1,38 +0,0 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Override TARGETS variable so that only shared libraries
# are specifed as dependencies within rules.mk.
#
TARGETS = $(SHARED_LIBRARY)
LIBRARY =
IMPORT_LIBRARY =
PROGRAM =
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
RES = $(OBJDIR)/$(LIBRARY_NAME).res
RESNAME = $(LIBRARY_NAME).rc
endif
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
# Needed for compilation of $(OBJDIR)/certdata.c
INCLUDES += -I.
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif
ifdef USE_GCOV
DSO_LDOPTS += --coverage
endif

View file

@ -23,3 +23,4 @@ CSRCS = \
REQUIRES = nspr
LIBRARY_NAME = nssckbi-testlib
LIBRARY = $(NULL)

View file

@ -0,0 +1,26 @@
;+#
;+# This Source Code Form is subject to the terms of the Mozilla Public
;+# License, v. 2.0. If a copy of the MPL was not distributed with this
;+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+
;+NSS_3.1 { # NSS 3.1 release
;+ global:
LIBRARY nssckbi-testlib ;-
EXPORTS ;-
C_GetFunctionList;
;+ local:
;+*;
;+};

View file

@ -5,7 +5,17 @@
include manifest.mn
include $(CORE_DEPTH)/coreconf/config.mk
include config.mk
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif
EXTRA_LIBS = \
$(DIST)/lib/$(LIB_PREFIX)nssckfw.$(LIB_SUFFIX) \
@ -60,8 +70,7 @@ DSO_LDOPTS = -bM:SRE -bh:4 -bnoentry
EXTRA_DSO_LDOPTS = -lc
MKSHLIB = xlC $(DSO_LDOPTS)
$(SHARED_LIBRARY): $(OBJS)
@$(MAKE_OBJDIR)
$(SHARED_LIBRARY): $(OBJS) | $$(@D)/d
rm -f $@
$(MKSHLIB) -o $@ $(OBJS) $(EXTRA_LIBS) $(EXTRA_DSO_LDOPTS)
chmod +x $@
@ -71,5 +80,3 @@ endif
ifeq ($(OS_TARGET)$(OS_RELEASE), AIX4.2)
LD += -G
endif

View file

@ -1,31 +0,0 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Override TARGETS variable so that only shared libraries
# are specifed as dependencies within rules.mk.
#
TARGETS = $(SHARED_LIBRARY)
LIBRARY =
IMPORT_LIBRARY =
PROGRAM =
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
RES = $(OBJDIR)/$(LIBRARY_NAME).res
RESNAME = $(LIBRARY_NAME).rc
endif
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
#
# To create a loadable module on Darwin, we must use -bundle.
#
ifeq ($(OS_TARGET),Darwin)
DSO_LDOPTS = -bundle
endif

View file

@ -6,7 +6,6 @@
CORE_DEPTH = ../../../..
MODULE = nss
MAPFILE = $(OBJDIR)/nsscapi.def
EXPORTS = \
nsscapi.h \
@ -29,5 +28,8 @@ CSRCS = \
REQUIRES = nspr
LIBRARY_NAME = nsscapi
MAPFILE = $(OBJDIR)/$(LIBRARY_NAME).def
LIBRARY = $(NULL)
IMPORT_LIBRARY = $(NULL)
#EXTRA_SHARED_LIBS = -L$(DIST)/lib -lnssckfw -lnssb -lplc4 -lplds4

View file

@ -1,25 +0,0 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
#
# Hack to see if everything still builds
#
#
# Override TARGETS variable so that only static libraries
# are specifed as dependencies within rules.mk.
#
TARGETS = $(LIBRARY)
SHARED_LIBRARY =
IMPORT_LIBRARY =
PROGRAM =

View file

@ -245,7 +245,7 @@ NSS_EXTERN CK_RV
nssCKFWCryptoOperation_DigestKey(
NSSCKFWCryptoOperation *fwOperation,
NSSCKFWObject *fwObject /* Key */
)
)
{
NSSCKMDObject *mdObject;

View file

@ -4,6 +4,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
include manifest.mn
include config.mk
include $(CORE_DEPTH)/coreconf/config.mk
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif
include $(CORE_DEPTH)/coreconf/rules.mk

View file

@ -1,8 +0,0 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
ifdef BUILD_IDG
DEFINES += -DNSSDEBUG
endif

View file

@ -392,19 +392,19 @@ nss_dbm_db_swap_type(
return type_byte;
case CKA_MODIFIABLE:
return type_byte;
case CKA_NETSCAPE_URL:
case CKA_NSS_URL:
return type_opaque;
case CKA_NETSCAPE_EMAIL:
case CKA_NSS_EMAIL:
return type_opaque;
case CKA_NETSCAPE_SMIME_INFO:
case CKA_NSS_SMIME_INFO:
return type_opaque;
case CKA_NETSCAPE_SMIME_TIMESTAMP:
case CKA_NSS_SMIME_TIMESTAMP:
return type_opaque;
case CKA_NETSCAPE_PKCS8_SALT:
case CKA_NSS_PKCS8_SALT:
return type_opaque;
case CKA_NETSCAPE_PASSWORD_CHECK:
case CKA_NSS_PASSWORD_CHECK:
return type_opaque;
case CKA_NETSCAPE_EXPIRES:
case CKA_NSS_EXPIRES:
return type_opaque;
case CKA_TRUST_DIGITAL_SIGNATURE:
return type_long;
@ -436,9 +436,9 @@ nss_dbm_db_swap_type(
return type_long;
case CKA_TRUST_TIME_STAMPING:
return type_long;
case CKA_NETSCAPE_DB:
case CKA_NSS_DB:
return type_opaque;
case CKA_NETSCAPE_TRUST:
case CKA_NSS_TRUST:
return type_opaque;
default:
return type_opaque;

View file

@ -21,5 +21,6 @@ CSRCS = \
REQUIRES = dbm nspr
LIBRARY_NAME = nssckdbm
LIBRARY = $(NULL)
EXTRA_SHARED_LIBS = -L$(DIST)/lib -lnssckfw -lnssb -ldbm -lnspr4 -lplc4 -lplds4

View file

@ -12,6 +12,8 @@
#include "ck.h"
#endif /* CK_T */
#include <stdint.h>
/*
* NSSCKFWInstance
*
@ -547,7 +549,7 @@ nssCKFWInstance_CreateSessionHandle(
}
*pError = nssCKFWHash_Add(fwInstance->sessionHandleHash,
(const void *)hSession, (const void *)fwSession);
(const void *)(uintptr_t)hSession, (const void *)fwSession);
if (CKR_OK != *pError) {
hSession = (CK_SESSION_HANDLE)0;
goto done;
@ -580,7 +582,7 @@ nssCKFWInstance_ResolveSessionHandle(
}
fwSession = (NSSCKFWSession *)nssCKFWHash_Lookup(
fwInstance->sessionHandleHash, (const void *)hSession);
fwInstance->sessionHandleHash, (const void *)(uintptr_t)hSession);
/* Assert(hSession == nssCKFWSession_GetHandle(fwSession)) */
@ -611,9 +613,9 @@ nssCKFWInstance_DestroySessionHandle(
}
fwSession = (NSSCKFWSession *)nssCKFWHash_Lookup(
fwInstance->sessionHandleHash, (const void *)hSession);
fwInstance->sessionHandleHash, (const void *)(uintptr_t)hSession);
if (fwSession) {
nssCKFWHash_Remove(fwInstance->sessionHandleHash, (const void *)hSession);
nssCKFWHash_Remove(fwInstance->sessionHandleHash, (const void *)(uintptr_t)hSession);
nssCKFWSession_SetHandle(fwSession, (CK_SESSION_HANDLE)0);
}
@ -682,7 +684,7 @@ nssCKFWInstance_CreateObjectHandle(
}
*pError = nssCKFWHash_Add(fwInstance->objectHandleHash,
(const void *)hObject, (const void *)fwObject);
(const void *)(uintptr_t)hObject, (const void *)fwObject);
if (CKR_OK != *pError) {
hObject = (CK_OBJECT_HANDLE)0;
goto done;
@ -715,7 +717,7 @@ nssCKFWInstance_ResolveObjectHandle(
}
fwObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
fwInstance->objectHandleHash, (const void *)hObject);
fwInstance->objectHandleHash, (const void *)(uintptr_t)hObject);
/* Assert(hObject == nssCKFWObject_GetHandle(fwObject)) */
@ -749,11 +751,11 @@ nssCKFWInstance_ReassignObjectHandle(
}
oldObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
fwInstance->objectHandleHash, (const void *)hObject);
fwInstance->objectHandleHash, (const void *)(uintptr_t)hObject);
if (oldObject) {
/* Assert(hObject == nssCKFWObject_GetHandle(oldObject) */
(void)nssCKFWObject_SetHandle(oldObject, (CK_SESSION_HANDLE)0);
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)hObject);
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)(uintptr_t)hObject);
}
error = nssCKFWObject_SetHandle(fwObject, hObject);
@ -761,7 +763,7 @@ nssCKFWInstance_ReassignObjectHandle(
goto done;
}
error = nssCKFWHash_Add(fwInstance->objectHandleHash,
(const void *)hObject, (const void *)fwObject);
(const void *)(uintptr_t)hObject, (const void *)fwObject);
done:
(void)nssCKFWMutex_Unlock(fwInstance->mutex);
@ -790,10 +792,10 @@ nssCKFWInstance_DestroyObjectHandle(
}
fwObject = (NSSCKFWObject *)nssCKFWHash_Lookup(
fwInstance->objectHandleHash, (const void *)hObject);
fwInstance->objectHandleHash, (const void *)(uintptr_t)hObject);
if (fwObject) {
/* Assert(hObject = nssCKFWObject_GetHandle(fwObject)) */
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)hObject);
nssCKFWHash_Remove(fwInstance->objectHandleHash, (const void *)(uintptr_t)hObject);
(void)nssCKFWObject_SetHandle(fwObject, (CK_SESSION_HANDLE)0);
}

View file

@ -5,7 +5,9 @@
CORE_DEPTH = ../..
DIRS = builtins
DIRS = . builtins
builtins: .
PRIVATE_EXPORTS = \
ck.h \
@ -48,6 +50,7 @@ CSRCS = \
REQUIRES = nspr
LIBRARY_NAME = nssckfw
SHARED_LIBRARY = $(NULL)
# This part of the code, including all sub-dirs, can be optimized for size
export ALLOW_OPT_CODE_SIZE = 1

View file

@ -52,6 +52,7 @@
struct NSSCKFWObjectStr {
NSSCKFWMutex *mutex; /* merely to serialise the MDObject calls */
NSSArena *arena;
NSSArena *localArena;
NSSCKMDObject *mdObject;
NSSCKMDSession *mdSession;
NSSCKFWSession *fwSession;
@ -110,6 +111,8 @@ nssCKFWObject_Create(
NSSCKFWInstance *fwInstance,
CK_RV *pError)
{
NSSArena *objArena = arena;
NSSArena *localArena = NULL;
NSSCKFWObject *fwObject;
nssCKFWHash *mdObjectHash;
@ -139,13 +142,23 @@ nssCKFWObject_Create(
return fwObject;
}
fwObject = nss_ZNEW(arena, NSSCKFWObject);
/* session objects should have their own arena so they can be destroyed in the end. */
if (arena == NULL) {
localArena = objArena = NSSArena_Create();
if (objArena == NULL) {
*pError = CKR_HOST_MEMORY;
return (NSSCKFWObject *)NULL;
}
}
fwObject = nss_ZNEW(objArena, NSSCKFWObject);
if (!fwObject) {
*pError = CKR_HOST_MEMORY;
return (NSSCKFWObject *)NULL;
}
fwObject->arena = arena;
fwObject->arena = objArena;
fwObject->localArena = localArena;
fwObject->mdObject = mdObject;
fwObject->fwSession = fwSession;
@ -157,18 +170,24 @@ nssCKFWObject_Create(
fwObject->mdToken = nssCKFWToken_GetMDToken(fwToken);
fwObject->fwInstance = fwInstance;
fwObject->mdInstance = nssCKFWInstance_GetMDInstance(fwInstance);
fwObject->mutex = nssCKFWInstance_CreateMutex(fwInstance, arena, pError);
fwObject->mutex = nssCKFWInstance_CreateMutex(fwInstance, objArena, pError);
if (!fwObject->mutex) {
if (CKR_OK == *pError) {
*pError = CKR_GENERAL_ERROR;
}
nss_ZFreeIf(fwObject);
if (localArena) {
NSSArena_Destroy(localArena);
}
return (NSSCKFWObject *)NULL;
}
*pError = nssCKFWHash_Add(mdObjectHash, mdObject, fwObject);
if (CKR_OK != *pError) {
nss_ZFreeIf(fwObject);
if (localArena) {
NSSArena_Destroy(localArena);
}
return (NSSCKFWObject *)NULL;
}
@ -177,6 +196,9 @@ nssCKFWObject_Create(
if (CKR_OK != *pError) {
nssCKFWHash_Remove(mdObjectHash, mdObject);
nss_ZFreeIf(fwObject);
if (localArena) {
NSSArena_Destroy(localArena);
}
return (NSSCKFWObject *)NULL;
}
#endif /* DEBUG */
@ -195,6 +217,7 @@ nssCKFWObject_Finalize(
PRBool removeFromHash)
{
nssCKFWHash *mdObjectHash;
NSSArena *arena = NULL;
#ifdef NSSDEBUG
if (CKR_OK != nssCKFWObject_verifyPointer(fwObject)) {
@ -220,7 +243,11 @@ nssCKFWObject_Finalize(
if (fwObject->fwSession) {
nssCKFWSession_DeregisterSessionObject(fwObject->fwSession, fwObject);
}
arena = fwObject->localArena;
nss_ZFreeIf(fwObject);
if (arena) {
NSSArena_Destroy(arena);
}
#ifdef DEBUG
(void)object_remove_pointer(fwObject);
@ -238,6 +265,7 @@ nssCKFWObject_Destroy(
NSSCKFWObject *fwObject)
{
nssCKFWHash *mdObjectHash;
NSSArena *arena = NULL;
#ifdef NSSDEBUG
if (CKR_OK != nssCKFWObject_verifyPointer(fwObject)) {
@ -261,7 +289,11 @@ nssCKFWObject_Destroy(
if (fwObject->fwSession) {
nssCKFWSession_DeregisterSessionObject(fwObject->fwSession, fwObject);
}
arena = fwObject->localArena;
nss_ZFreeIf(fwObject);
if (arena) {
NSSArena_Destroy(arena);
}
#ifdef DEBUG
(void)object_remove_pointer(fwObject);

View file

@ -1271,7 +1271,7 @@ gotmdobject:
return (NSSCKFWObject *)NULL;
}
fwObject = nssCKFWObject_Create(arena, mdObject,
fwObject = nssCKFWObject_Create(isTokenObject ? arena : NULL, mdObject,
isTokenObject ? NULL
: fwSession,
fwSession->fwToken, fwSession->fwInstance, pError);
@ -1399,7 +1399,7 @@ nssCKFWSession_CopyObject(
return (NSSCKFWObject *)NULL;
}
rv = nssCKFWObject_Create(arena, mdObject,
rv = nssCKFWObject_Create(newIsToken ? arena : NULL, mdObject,
newIsToken ? NULL
: fwSession,
fwSession->fwToken, fwSession->fwInstance, pError);

View file

@ -1211,8 +1211,7 @@ nssCKFWToken_GetUTCTime(
if (D > dims[M - 1])
goto badtime; /* per-month check */
if ((2 == M) && (((Y % 4) || !(Y % 100)) &&
(Y % 400)) &&
if ((2 == M) && (((Y % 4) || !(Y % 100)) && (Y % 400)) &&
(D > 28))
goto badtime; /* leap years */

View file

@ -222,13 +222,14 @@ NSSCKFWC_Finalize(
loser:
switch (error) {
PRInt32 remainingInstances;
case CKR_OK:
case CKR_OK: {
PRInt32 remainingInstances;
remainingInstances = PR_ATOMIC_DECREMENT(&liveInstances);
if (!remainingInstances) {
nssArena_Shutdown();
}
break;
}
case CKR_CRYPTOKI_NOT_INITIALIZED:
case CKR_FUNCTION_FAILED:
case CKR_GENERAL_ERROR:
@ -2570,11 +2571,17 @@ NSSCKFWC_FindObjects(
phObject[i] = nssCKFWInstance_FindObjectHandle(fwInstance, fwObject);
if ((CK_OBJECT_HANDLE)0 == phObject[i]) {
phObject[i] = nssCKFWInstance_CreateObjectHandle(fwInstance, fwObject, &error);
}
if ((CK_OBJECT_HANDLE)0 == phObject[i]) {
/* This isn't right either, is it? */
nssCKFWObject_Destroy(fwObject);
goto loser;
/* CreateObjectHandle returns CKR_GENERAL_ERROR if fwObject already
* has a handle. This happens when another thread creates a handle
* between our FindObjectHandle and CreateObjectHandle calls.
*/
if (error == CKR_GENERAL_ERROR) {
error = CKR_OK;
phObject[i] = nssCKFWInstance_FindObjectHandle(fwInstance, fwObject);
}
if (error != CKR_OK || (CK_OBJECT_HANDLE)0 == phObject[i]) {
goto loser;
}
}
}