]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
EVP_CIPHER_CTX_set_key_length: Raise error when key length is not settable
authorTomas Mraz <tomas@openssl.org>
Tue, 10 Aug 2021 12:51:21 +0000 (14:51 +0200)
committerDmitry Belyavskiy <beldmit@gmail.com>
Wed, 11 Aug 2021 15:11:47 +0000 (17:11 +0200)
If key length is different from the existing key length and it is not
a settable parameter, raise an error.

Fixes #16277

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/16279)

crypto/evp/evp_enc.c

index e0f411aa063a069c35730099efcc9876c1e3542d..519cab3f2b1ea4c0da408ede830c4fb2a819abbd 100644 (file)
@@ -986,8 +986,10 @@ int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *c, int keylen)
 
         /* Check the cipher actually understands this parameter */
         if (OSSL_PARAM_locate_const(EVP_CIPHER_settable_ctx_params(c->cipher),
-                                    OSSL_CIPHER_PARAM_KEYLEN) == NULL)
+                                    OSSL_CIPHER_PARAM_KEYLEN) == NULL) {
+            ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_KEY_LENGTH);
             return 0;
+        }
 
         params[0] = OSSL_PARAM_construct_size_t(OSSL_CIPHER_PARAM_KEYLEN, &len);
         ok = evp_do_ciph_ctx_setparams(c->cipher, c->algctx, params);