Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Langley <agl@chromium.org>2014-07-25 04:54:01 +0400
committerAdam Langley <agl@chromium.org>2014-07-29 04:05:13 +0400
commite532f823d689d37571d7a58edd24533a951f35d9 (patch)
tree1d52f9dc8c300efe96c63ba1f0ec5e97cf86c4f1 /crypto/asn1
parentd33cbb583e211b802d94ce91ee26e003625a5c9a (diff)
ASN1 sanity check.
Primitive encodings shouldn't use indefinite length constructed form. PR#2438 (partial). (Imported from upstream's 9223a31eb72dc46085ce97736c119c541973511e) Change-Id: I832d0bcda491c03c799b7b70184a1a3ec16b1592
Diffstat (limited to 'crypto/asn1')
-rw-r--r--crypto/asn1/asn1_lib.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/crypto/asn1/asn1_lib.c b/crypto/asn1/asn1_lib.c
index ca7209ee..f4dcb099 100644
--- a/crypto/asn1/asn1_lib.c
+++ b/crypto/asn1/asn1_lib.c
@@ -132,6 +132,9 @@ int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
*pclass=xclass;
if (!asn1_get_length(&p,&inf,plength,(int)max)) goto err;
+ if (inf && !(ret & V_ASN1_CONSTRUCTED))
+ 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),