Fix off-by-one errors in ssl_cipher_get_evp()

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
This commit is contained in:
Miod Vallat 2014-06-04 03:59:58 -04:00 committed by Matt Caswell
parent 08db2cc9c1
commit 532ee6e056

View File

@ -531,7 +531,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
break; break;
} }
if ((i < 0) || (i > SSL_ENC_NUM_IDX)) if ((i < 0) || (i >= SSL_ENC_NUM_IDX))
*enc=NULL; *enc=NULL;
else else
{ {
@ -559,7 +559,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
i= -1; i= -1;
break; break;
} }
if ((i < 0) || (i > SSL_MD_NUM_IDX)) if ((i < 0) || (i >= SSL_MD_NUM_IDX))
{ {
*md=NULL; *md=NULL;
if (mac_pkey_type!=NULL) *mac_pkey_type = NID_undef; if (mac_pkey_type!=NULL) *mac_pkey_type = NID_undef;