Commit 83ef21e5 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

openssl: fix bad memory free (regression)

... by partially reverting f975f060. 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
parent 85033bcf
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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;