rv = SEC_ASN1DecodeItem
rv = SEC_QuickDERDecodeItem
CERT_DecodeCRLDistributionPoints (PRArenaPool *arena, SECItem *encodedValue){   CERTCrlDistributionPoints *value = NULL;       CRLDistributionPoint **pointList, *point;       SECStatus rv;   PORT_Assert (arena);   do {	value = (CERTCrlDistributionPoints*)PORT_ArenaZAlloc (arena, sizeof (*value));	if (value == NULL) {	    rv = SECFailure;	    break;	}	    	rv = SEC_ASN1DecodeItem	     (arena, &value->distPoints, CERTCRLDistributionPointsTemplate,	      encodedValue);	if (rv != SECSuccess)	    break;	pointList = value->distPoints;	while (*pointList) {	    point = *pointList;	    /* get the data if the distributionPointName is not omitted */	    if (point->derDistPoint.data != NULL) {		point->distPointType = (DistributionPointTypes)					((point->derDistPoint.data[0] & 0x1f) +1);		if (point->distPointType == generalName) {		    SECItem innerDER;				    innerDER.data = NULL;		    rv = SEC_ASN1DecodeItem			 (arena, point, FullNameTemplate, &(point->derDistPoint));		    if (rv != SECSuccess)			break;		    point->distPoint.fullName = cert_DecodeGeneralNames			(arena, point->derFullName);		    if (!point->distPoint.fullName)			break;		}		else if ( relativeDistinguishedName) {		    rv = SEC_ASN1DecodeItem			 (arena, point, RelativeNameTemplate, &(point->derDistPoint));		    if (rv != SECSuccess)			break;		}		else {		    PORT_SetError (SEC_ERROR_EXTENSION_VALUE_INVALID);		    break;		}	    }	    /* Get the reason code if it's not omitted in the encoding */	    if (point->bitsmap.data != NULL) {		point->reasons.data = (unsigned char*) PORT_ArenaAlloc				      (arena, (point->bitsmap.len + 7) >> 3);		if (!point->reasons.data) {		    rv = SECFailure;		    break;		}		PORT_Memcpy (point->reasons.data, point->bitsmap.data,			     point->reasons.len = ((point->bitsmap.len + 7) >> 3));	    }	    /* Get the crl issuer name if it's not omitted in the encoding */	    if (point->derCrlIssuer != NULL) {		point->crlIssuer = cert_DecodeGeneralNames		    (arena, point->derCrlIssuer);		if (!point->crlIssuer)		    break;	    }	    ++pointList;	}   } while (0);   return (rv == SECSuccess ? value : NULL);}