From: Matt Caswell Date: Thu, 28 Apr 2016 09:46:55 +0000 (+0100) Subject: Prevent EBCDIC overread for very long strings X-Git-Tag: OpenSSL_1_0_1t~9 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2919516136a4227d9e6d8f2fe66ef976aaf8c561;p=oweals%2Fopenssl.git Prevent EBCDIC overread for very long strings ASN1 Strings that are over 1024 bytes can cause an overread in applications using the X509_NAME_oneline() function on EBCDIC systems. This could result in arbitrary stack data being returned in the buffer. Issue reported by Guido Vranken. CVE-2016-2176 Reviewed-by: Andy Polyakov --- diff --git a/crypto/x509/x509_obj.c b/crypto/x509/x509_obj.c index f7daac25e9..3de3ac7204 100644 --- a/crypto/x509/x509_obj.c +++ b/crypto/x509/x509_obj.c @@ -130,8 +130,9 @@ char *X509_NAME_oneline(X509_NAME *a, char *buf, int len) type == V_ASN1_PRINTABLESTRING || type == V_ASN1_TELETEXSTRING || type == V_ASN1_VISIBLESTRING || type == V_ASN1_IA5STRING) { - ascii2ebcdic(ebcdic_buf, q, (num > sizeof ebcdic_buf) - ? sizeof ebcdic_buf : num); + if (num > (int)sizeof(ebcdic_buf)) + num = sizeof(ebcdic_buf); + ascii2ebcdic(ebcdic_buf, q, num); q = ebcdic_buf; } #endif