From: Dr. Stephen Henson Date: Wed, 4 May 2016 15:09:06 +0000 (+0100) Subject: Fix name length limit check. X-Git-Tag: OpenSSL_1_0_1u~56 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b583c1bd069f6928c3973dc6d6864930f6c4bb3e;p=oweals%2Fopenssl.git Fix name length limit check. The name length limit check in x509_name_ex_d2i() includes the containing structure as well as the actual X509_NAME. This will cause large CRLs to be rejected. Fix by limiting the length passed to ASN1_item_ex_d2i() which will then return an error if the passed X509_NAME exceeds the length. RT#4531 Reviewed-by: Rich Salz (cherry picked from commit 4e0d184ac1dde845ba9574872e2ae5c903c81dff) --- diff --git a/crypto/asn1/x_name.c b/crypto/asn1/x_name.c index a858c2993b..26378fdb2a 100644 --- a/crypto/asn1/x_name.c +++ b/crypto/asn1/x_name.c @@ -199,10 +199,8 @@ static int x509_name_ex_d2i(ASN1_VALUE **val, int i, j, ret; STACK_OF(X509_NAME_ENTRY) *entries; X509_NAME_ENTRY *entry; - if (len > X509_NAME_MAX) { - ASN1err(ASN1_F_X509_NAME_EX_D2I, ASN1_R_TOO_LONG); - return 0; - } + if (len > X509_NAME_MAX) + len = X509_NAME_MAX; q = p; /* Get internal representation of Name */