if (!cc->nickname && c->nickname) {
if ((!cc->nickname && c->nickname) || forced) {
fill_CERTCertificateFields(NSSCertificate *c, CERTCertificate *cc){    NSSTrust *nssTrust;    NSSCryptoContext *context = c->object.cryptoContext;    nssCryptokiInstance *instance = get_cert_instance(c);    /* fill other fields needed by NSS3 functions using CERTCertificate */    if (!cc->nickname && c->nickname) {	PRStatus nssrv;	int nicklen, tokenlen, len;	NSSUTF8 *tokenName = NULL;	char *nick;	nicklen = nssUTF8_Size(c->nickname, &nssrv);	if (instance && !PK11_IsInternal(instance->token->pk11slot)) {	    tokenName = nssToken_GetName(instance->token);	    tokenlen = nssUTF8_Size(tokenName, &nssrv);	} else {	    /* don't use token name for internal slot; 3.3 didn't */	    tokenlen = 0;	}	len = tokenlen + nicklen;	cc->nickname = PORT_ArenaAlloc(cc->arena, len);	nick = cc->nickname;	if (tokenName) {	    memcpy(nick, tokenName, tokenlen-1);	    nick += tokenlen-1;	    *nick++ = ':';	}	memcpy(nick, c->nickname, nicklen-1);	cc->nickname[len-1] = '\0';    }    if (context) {	/* trust */	nssTrust = nssCryptoContext_FindTrustForCertificate(context, c);	if (nssTrust) {	    cc->trust = cert_trust_from_stan_trust(nssTrust, cc->arena);	    nssPKIObject_Destroy(&nssTrust->object);	}    } else if (instance) {	/* slot */	cc->slot = PK11_ReferenceSlot(instance->token->pk11slot);	cc->ownSlot = PR_TRUE;	/* pkcs11ID */	cc->pkcs11ID = instance->handle;	/* trust */	cc->trust = nssTrust_GetCERTCertTrustForCert(c, cc);    }     /* database handle is now the trust domain */    cc->dbhandle = c->object.trustDomain;    /* subjectList ? */    /* istemp and isperm are supported in NSS 3.4 */    cc->istemp = PR_FALSE; /* CERT_NewTemp will override this */    cc->isperm = PR_TRUE;  /* by default */    /* pointer back */    cc->nssCertificate = c;}