Commit 0e7bda79 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Handle BER length encoding.

Tolerate BER length encoding which may include leading zeroes.

PR#2746
parent a356e488
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -170,14 +170,20 @@ static int asn1_get_length(const unsigned char **pp, int *inf, long *rl, int max
		i= *p&0x7f;
		if (*(p++) & 0x80)
			{
			if (max < (int)i)
				return 0;
			/* Skip leading zeroes */
			while (i && *p == 0)
				{
				p++;
				i--;
				}
			if (i > sizeof(long))
				return 0;
			if (max-- == 0) return(0);
			while (i-- > 0)
				{
				ret<<=8L;
				ret|= *(p++);
				if (max-- == 0) return(0);
				}
			}
		else