summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--psession.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/psession.c b/psession.c
index 82f8b41..1532fdf 100644
--- a/psession.c
+++ b/psession.c
@@ -178,8 +178,16 @@ pem_mdSession_CopyObject
CK_RV * pError
)
{
+ NSSCKMDObject *rvmdObject = NULL;
pemInternalObject *io = (pemInternalObject *) mdOldObject->etc;
+ /* make a new mdObject */
+ rvmdObject = nss_ZNEW(arena, NSSCKMDObject);
+ if ((NSSCKMDObject *) NULL == rvmdObject) {
+ *pError = CKR_HOST_MEMORY;
+ return (NSSCKMDObject *) NULL;
+ }
+
if (NULL == io->list) {
io->refCount ++;
} else {
@@ -190,7 +198,10 @@ pem_mdSession_CopyObject
item = item->next;
}
}
- return mdOldObject;
+ /* struct (shallow) copy the old one */
+ *rvmdObject = *mdOldObject;
+
+ return rvmdObject;
}
CK_RV