if (symKey->session == CK_INVALID_SESSION) {
if (needSession && symKey->session == CK_INVALID_SESSION) {
pk11_CreateSymKey(PK11SlotInfo *slot, CK_MECHANISM_TYPE type, PRBool owner, 								void *wincx){    PK11SymKey *symKey = pk11_getKeyFromList(slot);    if (symKey == NULL) {	return NULL;    }    if (symKey->session == CK_INVALID_SESSION) {    	PK11_FreeSymKey(symKey);	PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);	return NULL;    }    symKey->type = type;    symKey->data.type = siBuffer;    symKey->data.data = NULL;    symKey->data.len = 0;    symKey->owner = owner;    symKey->objectID = CK_INVALID_HANDLE;    symKey->slot = slot;    symKey->series = slot->series;    symKey->cx = wincx;    symKey->size = 0;    symKey->refCount = 1;    symKey->origin = PK11_OriginNULL;    symKey->parent = NULL;    PK11_ReferenceSlot(slot);    return symKey;}