From: Dr. Stephen Henson Date: Wed, 27 Apr 2016 19:27:41 +0000 (+0100) Subject: Don't free ret->data if malloc fails. X-Git-Tag: OpenSSL_1_0_1t~12 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=66ce2861c172b2eb344906f424e593337fbd1af8;p=oweals%2Fopenssl.git Don't free ret->data if malloc fails. Issue reported by Guido Vranken. Reviewed-by: Matt Caswell (cherry picked from commit 64eaf6c928f4066d62aa86f805796ef05bd0b1cc) --- diff --git a/crypto/asn1/a_bytes.c b/crypto/asn1/a_bytes.c index 12715a7280..385b53986a 100644 --- a/crypto/asn1/a_bytes.c +++ b/crypto/asn1/a_bytes.c @@ -200,13 +200,13 @@ ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp, } else { if (len != 0) { if ((ret->length < len) || (ret->data == NULL)) { - if (ret->data != NULL) - OPENSSL_free(ret->data); s = (unsigned char *)OPENSSL_malloc((int)len + 1); if (s == NULL) { i = ERR_R_MALLOC_FAILURE; goto err; } + if (ret->data != NULL) + OPENSSL_free(ret->data); } else s = ret->data; memcpy(s, p, (int)len);