From 216488231e6739e9a04bd2ef0138d246f25d8a8d Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Thu, 22 Jul 2021 15:49:30 +0200 Subject: [PATCH] doCrypt() - check the error codes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disabled (moved into the legacy provider) DES-CBC results in a crash, when setting key length. Change-Id: Ie0b49424f11d8042ebecebfd3b6346263f730551 Reviewed-by: MÃ¥rten Nordheim (cherry picked from commit b4942f7f0c56f2c5dcd783760a8c915463e8e744) --- src/network/ssl/qtlskey_openssl.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/network/ssl/qtlskey_openssl.cpp b/src/network/ssl/qtlskey_openssl.cpp index 6d75dfd5b4f..9d046b34b00 100644 --- a/src/network/ssl/qtlskey_openssl.cpp +++ b/src/network/ssl/qtlskey_openssl.cpp @@ -38,6 +38,7 @@ ****************************************************************************/ #include "qsslsocket_openssl_symbols_p.h" +#include "qtlsbackend_openssl_p.h" #include "qtlskey_openssl_p.h" #include "qsslsocket.h" #include "qsslkey_p.h" @@ -435,7 +436,10 @@ QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data, EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new(); q_EVP_CIPHER_CTX_reset(ctx); - q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc); + if (q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc) != 1) { + QTlsBackendOpenSSL::logAndClearErrorQueue(); + return QByteArray(); + } q_EVP_CIPHER_CTX_set_key_length(ctx, key.size()); if (cipher == Cipher::Rc2Cbc) q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr);