From 0e7bda79a1f60f85873b12135bb29f67ccccf8c8 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Sat, 28 Jun 2014 14:04:36 +0100 Subject: [PATCH] Handle BER length encoding. Tolerate BER length encoding which may include leading zeroes. PR#2746 --- crypto/asn1/asn1_lib.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c index 1bcb44aee2..74ca7d4fa3 100644 --- a/crypto/asn1/asn1_lib.c +++ b/crypto/asn1/asn1_lib.c @@ -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 -- 2.34.1