diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2021-07-22 15:49:30 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-23 14:27:23 +0000 |
commit | 621c16a9650d3068ec9aea2c055193c00a5f8ce5 (patch) | |
tree | e2a82dd72d95b01b71d60e076fc4bc5f31d269db | |
parent | 271eed5a516af0bea2bade80a1f95006170a6354 (diff) |
doCrypt() - check the error codes
Disabled (moved into the legacy provider) DES-CBC results in a crash,
when setting key length.
Change-Id: Ie0b49424f11d8042ebecebfd3b6346263f730551
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
(cherry picked from commit b4942f7f0c56f2c5dcd783760a8c915463e8e744)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/tls/openssl/qtlskey_openssl.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/plugins/tls/openssl/qtlskey_openssl.cpp b/src/plugins/tls/openssl/qtlskey_openssl.cpp index 5333623d70..0d5b698668 100644 --- a/src/plugins/tls/openssl/qtlskey_openssl.cpp +++ b/src/plugins/tls/openssl/qtlskey_openssl.cpp @@ -38,6 +38,7 @@ ****************************************************************************/ #include "qsslsocket_openssl_symbols_p.h" +#include "qtlsbackend_openssl_p.h" #include "qtlskey_openssl_p.h" #include <QtNetwork/private/qsslkey_p.h> @@ -437,7 +438,12 @@ 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) { + q_EVP_CIPHER_CTX_free(ctx); + QTlsBackendOpenSSL::logAndClearErrorQueue(); + return {}; + } + 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); |