From 240622084098dcd1091638abfa6c1f6ce67b21a0 Mon Sep 17 00:00:00 2001 From: tb <> Date: Wed, 20 Dec 2023 14:05:58 +0000 Subject: Add some sanity checks for EVP_CIPHER_meth_new() Ensure that the nid and key length are non-negative and that the block size is one of the three sizes 1, 8, or 16 supported by the EVP subsystem. ok joshua jsing --- src/lib/libcrypto/evp/cipher_method_lib.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/libcrypto/evp/cipher_method_lib.c b/src/lib/libcrypto/evp/cipher_method_lib.c index c3f510fcc7..d3931522d8 100644 --- a/src/lib/libcrypto/evp/cipher_method_lib.c +++ b/src/lib/libcrypto/evp/cipher_method_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cipher_method_lib.c,v 1.10 2023/07/07 19:37:53 beck Exp $ */ +/* $OpenBSD: cipher_method_lib.c,v 1.11 2023/12/20 14:05:58 tb Exp $ */ /* * Written by Richard Levitte (levitte@openssl.org) for the OpenSSL project * 2015. @@ -68,6 +68,13 @@ EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len) { EVP_CIPHER *cipher; + if (cipher_type < 0 || key_len < 0) + return NULL; + + /* EVP_CipherInit() will fail for any other value. */ + if (block_size != 1 && block_size != 8 && block_size != 16) + return NULL; + if ((cipher = calloc(1, sizeof(*cipher))) == NULL) return NULL; -- cgit v1.2.3-55-g6feb