Fix off-by-one errors in ssl_cipher_get_evp()
authorMiod Vallat <miod@openbsd.org>
Wed, 4 Jun 2014 07:59:58 +0000 (03:59 -0400)
committerMatt Caswell <matt@openssl.org>
Sun, 22 Jun 2014 22:18:15 +0000 (23:18 +0100)
In the ssl_cipher_get_evp() function, fix off-by-one errors in index validation before accessing arrays.

Bug discovered and fixed by Miod Vallat from the OpenBSD team.

PR#3375

ssl/ssl_ciph.c

index 13127d725e4f6e8bf9ae723ce64e0d80f3f592fa..05b1e5e0dbb00b16c619e59f76031d2d7a7e7df5 100644 (file)
@@ -563,7 +563,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
                break;
                }
 
-       if ((i < 0) || (i > SSL_ENC_NUM_IDX))
+       if ((i < 0) || (i >= SSL_ENC_NUM_IDX))
                *enc=NULL;
        else
                {
@@ -597,7 +597,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
                i= -1;
                break;
                }
-       if ((i < 0) || (i > SSL_MD_NUM_IDX))
+       if ((i < 0) || (i >= SSL_MD_NUM_IDX))
        {
                *md=NULL; 
                if (mac_pkey_type!=NULL) *mac_pkey_type = NID_undef;