summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-03-02 17:48:31 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2017-03-07 22:06:46 +0100
commit9108068c252db468110a2113bf31760ecb677964 (patch)
tree3a60d67c8b046216eeaa58241fc3456ca81b09f8
parent3c5c98e82e58e0d78eb8b41c8c1da88963a28106 (diff)
downloadgnutls-9108068c252db468110a2113bf31760ecb677964.tar.gz
alerts: separated record overflow from decode error alerts
Introduced GNUTLS_E_RECORD_OVERFLOW. Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--lib/alert.c3
-rw-r--r--lib/errors.c3
-rw-r--r--lib/includes/gnutls/gnutls.h.in3
-rw-r--r--lib/record.c3
4 files changed, 9 insertions, 3 deletions
diff --git a/lib/alert.c b/lib/alert.c
index a4e30cf48c..0aa92e314e 100644
--- a/lib/alert.c
+++ b/lib/alert.c
@@ -201,6 +201,7 @@ int gnutls_error_to_alert(int err, int *level)
ret = GNUTLS_A_BAD_RECORD_MAC;
_level = GNUTLS_AL_FATAL;
break;
+ case GNUTLS_E_UNEXPECTED_PACKET_LENGTH:
case GNUTLS_E_UNEXPECTED_EXTENSIONS_LENGTH:
ret = GNUTLS_A_DECODE_ERROR;
_level = GNUTLS_AL_FATAL;
@@ -273,7 +274,7 @@ int gnutls_error_to_alert(int err, int *level)
ret = GNUTLS_A_UNSUPPORTED_CERTIFICATE;
_level = GNUTLS_AL_FATAL;
break;
- case GNUTLS_E_UNEXPECTED_PACKET_LENGTH:
+ case GNUTLS_E_RECORD_OVERFLOW:
ret = GNUTLS_A_RECORD_OVERFLOW;
_level = GNUTLS_AL_FATAL;
break;
diff --git a/lib/errors.c b/lib/errors.c
index 7dd7e149ee..7634eaee28 100644
--- a/lib/errors.c
+++ b/lib/errors.c
@@ -66,6 +66,9 @@ static const gnutls_error_entry error_entries[] = {
ERROR_ENTRY(N_
("A TLS packet with unexpected length was received."),
GNUTLS_E_UNEXPECTED_PACKET_LENGTH),
+ ERROR_ENTRY(N_
+ ("A TLS packet with unexpected length was received."),
+ GNUTLS_E_RECORD_OVERFLOW),
ERROR_ENTRY(N_("The TLS connection was non-properly terminated."),
GNUTLS_E_PREMATURE_TERMINATION),
ERROR_ENTRY(N_
diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in
index 28b6d48044..5a071c0d04 100644
--- a/lib/includes/gnutls/gnutls.h.in
+++ b/lib/includes/gnutls/gnutls.h.in
@@ -2629,7 +2629,7 @@ unsigned gnutls_fips140_mode_enabled(void);
#define GNUTLS_E_UNKNOWN_CIPHER_TYPE -6
#define GNUTLS_E_LARGE_PACKET -7
#define GNUTLS_E_UNSUPPORTED_VERSION_PACKET -8 /* GNUTLS_A_PROTOCOL_VERSION */
-#define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9 /* GNUTLS_A_RECORD_OVERFLOW */
+#define GNUTLS_E_UNEXPECTED_PACKET_LENGTH -9 /* GNUTLS_A_DECODE_ERROR */
#define GNUTLS_E_INVALID_SESSION -10
#define GNUTLS_E_FATAL_ALERT_RECEIVED -12
#define GNUTLS_E_UNEXPECTED_PACKET -15 /* GNUTLS_A_UNEXPECTED_MESSAGE */
@@ -2842,6 +2842,7 @@ unsigned gnutls_fips140_mode_enabled(void);
#define GNUTLS_E_INVALID_UTF8_EMAIL -414
#define GNUTLS_E_INVALID_PASSWORD_STRING -415
#define GNUTLS_E_CERTIFICATE_TIME_ERROR -416
+#define GNUTLS_E_RECORD_OVERFLOW -417 /* GNUTLS_A_RECORD_OVERFLOW */
#define GNUTLS_E_UNIMPLEMENTED_FEATURE -1250
diff --git a/lib/record.c b/lib/record.c
index 133f23e145..59b5ee114c 100644
--- a/lib/record.c
+++ b/lib/record.c
@@ -1104,7 +1104,7 @@ static int recv_headers(gnutls_session_t session,
(session, "Received packet with illegal length: %u\n",
(unsigned int) record->length);
return
- gnutls_assert_val(GNUTLS_E_UNEXPECTED_PACKET_LENGTH);
+ gnutls_assert_val(GNUTLS_E_RECORD_OVERFLOW);
}
_gnutls_record_log
@@ -1368,6 +1368,7 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type,
if (IS_DTLS(session) && (ret == GNUTLS_E_DECRYPTION_FAILED ||
ret == GNUTLS_E_UNSUPPORTED_VERSION_PACKET ||
ret == GNUTLS_E_UNEXPECTED_PACKET_LENGTH ||
+ ret == GNUTLS_E_RECORD_OVERFLOW ||
ret == GNUTLS_E_UNEXPECTED_PACKET ||
ret == GNUTLS_E_ERROR_IN_FINISHED_PACKET ||
ret == GNUTLS_E_UNEXPECTED_HANDSHAKE_PACKET)) {