summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/ext/server_name.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/ext/server_name.c b/lib/ext/server_name.c
index 579721b5eb..1b2c9d0ed9 100644
--- a/lib/ext/server_name.c
+++ b/lib/ext/server_name.c
@@ -79,15 +79,12 @@ _gnutls_server_name_recv_params(gnutls_session_t session,
gnutls_ext_priv_data_t epriv;
if (session->security_parameters.entity == GNUTLS_SERVER) {
- DECR_LENGTH_RET(data_size, 2, 0);
+ DECR_LENGTH_RET(data_size, 2, GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
len = _gnutls_read_uint16(data);
if (len != data_size) {
- /* This is unexpected packet length, but
- * just ignore it, for now.
- */
gnutls_assert();
- return 0;
+ return GNUTLS_E_UNEXPECTED_PACKET_LENGTH;
}
p = data + 2;
@@ -105,10 +102,12 @@ _gnutls_server_name_recv_params(gnutls_session_t session,
DECR_LENGTH_RET(data_size, len, 0);
server_names++;
p += len;
- } else
+ } else {
_gnutls_handshake_log
("HSK[%p]: Received (0) size server name (under attack?)\n",
session);
+ return gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
+ }
}