doCrypt() - check the error codes

Disabled (moved into the legacy provider) DES-CBC results in a crash,
when setting key length.

Pick-to: 6.2 6.1 5.15
Change-Id: Ie0b49424f11d8042ebecebfd3b6346263f730551
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Timur Pocheptsov 2021-07-22 15:49:30 +02:00
parent 58cf68529a
commit b4942f7f0c

View File

@ -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);