From: Shane Lontis Date: Mon, 6 Jul 2020 23:46:37 +0000 (+1000) Subject: Fix CID 1454806: NEGATIVE_RETURNS (cms_enc.c) X-Git-Tag: openssl-3.0.0-alpha5~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c8ea9bc6702e30f4efa690906abd14c5eab927cf;p=thirdparty%2Fopenssl.git Fix CID 1454806: NEGATIVE_RETURNS (cms_enc.c) Reviewed-by: Dmitry Belyavskiy (Merged from https://github.com/openssl/openssl/pull/12379) --- diff --git a/crypto/cms/cms_enc.c b/crypto/cms/cms_enc.c index 3a17a2798b9..5f9e2b3a52b 100644 --- a/crypto/cms/cms_enc.c +++ b/crypto/cms/cms_enc.c @@ -28,6 +28,7 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) X509_ALGOR *calg = ec->contentEncryptionAlgorithm; unsigned char iv[EVP_MAX_IV_LENGTH], *piv = NULL; unsigned char *tkey = NULL; + int len; size_t tkeylen = 0; int ok = 0; @@ -81,7 +82,11 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec) CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR); goto err; } - tkeylen = EVP_CIPHER_CTX_key_length(ctx); + len = EVP_CIPHER_CTX_key_length(ctx); + if (len <= 0) + goto err; + tkeylen = (size_t)len; + /* Generate random session key */ if (!enc || !ec->key) { tkey = OPENSSL_malloc(tkeylen);