Fix bounds check in EVP_PKEY_CTX_get_keygen_info()
authortb <tb@openbsd.org>
Mon, 1 Jan 2024 18:33:04 +0000 (18:33 +0000)
committertb <tb@openbsd.org>
Mon, 1 Jan 2024 18:33:04 +0000 (18:33 +0000)
Replace > with >= for the upper array bound to disallow a 4 byte
overread. For RSA you can read the padding mode and for DH past
the DH_PKEY_CTX. Unfortunately, Ruby thought it important to use
this, so we can't kill it easily.

ok miod

lib/libcrypto/evp/pmeth_gn.c

index c91076b..ce7b107 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmeth_gn.c,v 1.14 2023/11/29 21:35:57 tb Exp $ */
+/* $OpenBSD: pmeth_gn.c,v 1.15 2024/01/01 18:33:04 tb Exp $ */
 /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
  * project 2006.
  */
@@ -197,7 +197,7 @@ EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx)
 {
        if (idx == -1)
                return ctx->keygen_info_count;
-       if (idx < 0 || idx > ctx->keygen_info_count)
+       if (idx < 0 || idx >= ctx->keygen_info_count)
                return 0;
        return ctx->keygen_info[idx];
 }