mirror of https://github.com/openssl/openssl.git
Bugfix: in asn1parse avoid erroneous len after a sub-sequence
Introduced in:
commit 79c7f74d6c
Author: Ben Laurie <ben@links.org>
Date: Tue Mar 29 19:37:57 2016 +0100
Fix buffer overrun in ASN1_parse().
Problem input:
https://tools.ietf.org/html/draft-ietf-curdle-pkix-eddsa-00#section-8.1
-----BEGIN PUBLIC KEY-----
MC0wCAYDK2VkCgECAyEAGb9ECWmEzf6FQbrBZ9w7lshQhqowtrbLDFw4rXAxZuE=
-----END PUBLIC KEY-----
Previously:
0:d=0 hl=2 l= 45 cons: SEQUENCE
2:d=1 hl=2 l= 8 cons: SEQUENCE
4:d=2 hl=2 l= 3 prim: OBJECT :1.3.101.100
9:d=2 hl=2 l= 1 prim: ENUMERATED :02
Error in encoding
140735164989440:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:../openssl/crypto/asn1/asn1_lib.c:148:
Now:
0:d=0 hl=2 l= 45 cons: SEQUENCE
2:d=1 hl=2 l= 8 cons: SEQUENCE
4:d=2 hl=2 l= 3 prim: OBJECT :1.3.101.100
9:d=2 hl=2 l= 1 prim: ENUMERATED :02
12:d=1 hl=2 l= 33 prim: BIT STRING
0000 - 00 19 bf 44 09 69 84 cd-fe 85 41 ba c1 67 dc 3b ...D.i....A..g.;
0010 - 96 c8 50 86 aa 30 b6 b6-cb 0c 5c 38 ad 70 31 66 ..P..0....\8.p1f
0020 - e1 .
Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
5968d11a7a
commit
bdcd660e33
|
|
@ -189,18 +189,19 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length,
|
|||
}
|
||||
}
|
||||
} else {
|
||||
long tmp = len;
|
||||
|
||||
while (p < ep) {
|
||||
sp = p;
|
||||
r = asn1_parse2(bp, &p, len,
|
||||
r = asn1_parse2(bp, &p, tmp,
|
||||
offset + (p - *pp), depth + 1,
|
||||
indent, dump);
|
||||
if (r == 0) {
|
||||
ret = 0;
|
||||
goto end;
|
||||
}
|
||||
len -= p - sp;
|
||||
tmp -= p - sp;
|
||||
}
|
||||
len = length;
|
||||
}
|
||||
} else if (xclass != 0) {
|
||||
p += len;
|
||||
|
|
|
|||
Loading…
Reference in New Issue