diff options
-rw-r--r-- | psession.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -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 |