if (context->param) SECITEM_FreeItem(context->param, PR_TRUE);
if (context->param && context->param != &pk11_null_params) SECITEM_FreeItem(context->param, PR_TRUE);
PK11_DestroyContext(PK11Context *context, PRBool freeit){    SECStatus rv = SECFailure;    if (context->ownSession && context->key && /* context owns session & key */        context->key->session == context->session && /* sharing session */        !context->key->sessionOwner)              /* sanity check */    {	/* session still valid, let the key free it as necessary */        rv = PK11_Finalize(context); /* end any ongoing activity */	if (rv == SECSuccess) {	    context->key->sessionOwner = PR_TRUE;	} /* else couldn't finalize the session, close it */    }    if (rv == SECFailure) {	pk11_CloseSession(context->slot,context->session,context->ownSession);    }    /* initialize the critical fields of the context */    if (context->savedData != NULL ) PORT_Free(context->savedData);    if (context->key) PK11_FreeSymKey(context->key);    if (context->param) SECITEM_FreeItem(context->param, PR_TRUE);    if (context->sessionLock) PZ_DestroyLock(context->sessionLock);    PK11_FreeSlot(context->slot);    if (freeit) PORT_Free(context);}