From: Daniel Stenberg Date: Fri, 9 Sep 2016 21:33:09 +0000 (+0200) Subject: openssl: fix bad memory free (regression) X-Git-Tag: curl-7_50_3~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83ef21e5e9946de2805ae10cc5e6ef9431b22702;p=thirdparty%2Fcurl.git openssl: fix bad memory free (regression) ... by partially reverting f975f06033b1. The allocation could be made by OpenSSL so the free must be made with OPENSSL_free() to avoid problems. Reported-by: Harold Stuart Fixes #1005 --- diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c index 0a3e6a3bed..0a46f9d43c 100644 --- a/lib/vtls/openssl.c +++ b/lib/vtls/openssl.c @@ -1223,7 +1223,7 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert) if(ASN1_STRING_type(tmp) == V_ASN1_UTF8STRING) { j = ASN1_STRING_length(tmp); if(j >= 0) { - peer_CN = malloc(j+1); + peer_CN = OPENSSL_malloc(j+1); if(peer_CN) { memcpy(peer_CN, ASN1_STRING_get0_data(tmp), j); peer_CN[j] = '\0'; @@ -1249,7 +1249,7 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert) CURLcode rc = Curl_convert_from_utf8(data, peer_CN, strlen(peer_CN)); /* Curl_convert_from_utf8 calls failf if unsuccessful */ if(rc) { - free(peer_CN); + OPENSSL_free(peer_CN); return rc; } } @@ -1271,7 +1271,7 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert) infof(data, " common name: %s (matched)\n", peer_CN); } if(peer_CN) - free(peer_CN); + OPENSSL_free(peer_CN); } return result;