SEC_DestroyCrl (newCrl);
if (crl == NULL) { SEC_DestroyCrl (newCrl); }
CERTSignedCrl * CERT_ImportCRL   (CERTCertDBHandle *handle, SECItem *derCRL, char *url, int type, void *wincx){    CERTCertificate *caCert;    CERTSignedCrl *newCrl, *crl;    SECStatus rv;    newCrl = crl = NULL;    PORT_Assert (handle != NULL);    do {	newCrl = CERT_DecodeDERCrl(NULL, derCRL, type);	if (newCrl == NULL) {	    if (type == SEC_CRL_TYPE) {		/* only promote error when the error code is too generic */		if (PORT_GetError () == SEC_ERROR_BAD_DER)			PORT_SetError(SEC_ERROR_CRL_INVALID);	    } else {		PORT_SetError(SEC_ERROR_KRL_INVALID);	    }	    break;			}    	caCert = CERT_FindCertByName (handle, &newCrl->crl.derName);	if (caCert == NULL) {	    PORT_SetError(SEC_ERROR_UNKNOWN_ISSUER);	    	    break;	}	/* If caCert is a v3 certificate, make sure that it can be used for	   crl signing purpose */	rv = CERT_CheckCertUsage (caCert, KU_CRL_SIGN);	if (rv != SECSuccess) {	    break;	}	rv = CERT_VerifySignedData(&newCrl->signatureWrap, caCert,				   PR_Now(), wincx);	if (rv != SECSuccess) {	    if (type == SEC_CRL_TYPE) {		PORT_SetError(SEC_ERROR_CRL_BAD_SIGNATURE);	    } else {		PORT_SetError(SEC_ERROR_KRL_BAD_SIGNATURE);	    }	    break;	}#ifdef FIXME	/* Do CRL validation and add to the dbase if this crl is more present then the one	   in the dbase, if one exists.	 */	crl = cert_DBInsertCRL (handle, url, newCrl, derCRL, type);#endif    } while (0);    SEC_DestroyCrl (newCrl);    return (crl);}