diff options
Diffstat (limited to 'lib/sslv2_compat.c')
-rw-r--r-- | lib/sslv2_compat.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/sslv2_compat.c b/lib/sslv2_compat.c index d466cc30f1..9d8fd91bf4 100644 --- a/lib/sslv2_compat.c +++ b/lib/sslv2_compat.c @@ -93,10 +93,10 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, int pos = 0; int ret = 0, sret = 0; uint16_t sizeOfSuites; - gnutls_protocol_t adv_version; uint8_t rnd[GNUTLS_RANDOM_SIZE], major, minor; int len = datalen; int neg_version; + const version_entry_st *vers; uint16_t challenge; uint8_t session_id[GNUTLS_MAX_SESSION_ID_SIZE]; @@ -110,14 +110,17 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, minor = data[pos + 1]; set_adv_version(session, major, minor); - adv_version = _gnutls_version_get(major, minor); - - ret = _gnutls_negotiate_version(session, adv_version, major, minor); + ret = _gnutls_negotiate_version(session, major, minor, 0); if (ret < 0) { gnutls_assert(); return ret; } - neg_version = ret; + + vers = get_version(session); + if (vers == NULL) + return gnutls_assert_val(GNUTLS_E_UNSUPPORTED_VERSION_PACKET); + + neg_version = vers->id; pos += 2; @@ -148,7 +151,7 @@ _gnutls_read_client_hello_v2(gnutls_session_t session, uint8_t * data, /* call the user hello callback */ - ret = _gnutls_user_hello_func(session, adv_version, major, minor); + ret = _gnutls_user_hello_func(session, major, minor); if (ret < 0) { if (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED) { sret = GNUTLS_E_INT_RET_0; |