if (*plength > (omax - (*p - *pp)))
if (*plength > (omax - (p - *pp)))
int ASN1_get_object(unsigned char **pp, long *plength, int *ptag, int *pclass,	     long omax)	{	int i,ret;	long l;	unsigned char *p= *pp;	int tag,xclass,inf;	long max=omax;	if (!max) goto err;	ret=(*p&V_ASN1_CONSTRUCTED);	xclass=(*p&V_ASN1_PRIVATE);	i= *p&V_ASN1_PRIMITIVE_TAG;	if (i == V_ASN1_PRIMITIVE_TAG)		{		/* high-tag */		p++;		if (--max == 0) goto err;		l=0;		while (*p&0x80)			{			l<<=7L;			l|= *(p++)&0x7f;			if (--max == 0) goto err;			}		l<<=7L;		l|= *(p++)&0x7f;		tag=(int)l;		}	else		{ 		tag=i;		p++;		if (--max == 0) goto err;		}	*ptag=tag;	*pclass=xclass;	if (!asn1_get_length(&p,&inf,plength,(int)max)) goto err;#if 0	fprintf(stderr,"p=%d + *plength=%ld > omax=%ld + *pp=%d  (%d > %d)\n", 		(int)p,*plength,omax,(int)*pp,(int)(p+ *plength),		(int)(omax+ *pp));#endif	if (*plength > (omax - (*p - *pp)))		{		ASN1err(ASN1_F_ASN1_GET_OBJECT,ASN1_R_TOO_LONG);		/* Set this so that even if things are not long enough		 * the values are set correctly */		ret|=0x80;		}	*pp=p;	return(ret|inf);err:	ASN1err(ASN1_F_ASN1_GET_OBJECT,ASN1_R_HEADER_TOO_LONG);	return(0x80);	}