PORT_SetError (SEC_ERROR_BAD_DER);
sec_asn1d_push_state (SEC_ASN1DecoderContext *cx,		      const SEC_ASN1Template *theTemplate,		      void *dest, PRBool new_depth){    sec_asn1d_state *state, *new_state;    state = cx->current;    PORT_Assert (state == NULL || state->child == NULL);    if (state != NULL) {	PORT_Assert (state->our_mark == NULL);	state->our_mark = PORT_ArenaMark (cx->our_pool);    }    new_state = (sec_asn1d_state*)sec_asn1d_zalloc (cx->our_pool, 						    sizeof(*new_state));    if (new_state == NULL) {	goto loser;    }    new_state->top         = cx;    new_state->parent      = state;    new_state->theTemplate = theTemplate;    new_state->place       = notInUse;    if (dest != NULL)	new_state->dest = (char *)dest + theTemplate->offset;    if (state != NULL) {	new_state->depth = state->depth;	if (new_depth) {	    if (++new_state->depth > SEC_ASN1D_MAX_DEPTH) {		goto loser;	    }	}	state->child = new_state;    }    cx->current = new_state;    return new_state;loser:    cx->status = decodeError;    if (state != NULL) {	PORT_ArenaRelease(cx->our_pool, state->our_mark);	state->our_mark = NULL;    }    return NULL;}