summaryrefslogtreecommitdiff
path: root/lib/record.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-07-13 13:21:29 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2017-07-13 14:47:30 +0200
commit537ca1a7da03943ab569dc2445292935871159ed (patch)
tree5d6172807ba3d18b0a8347b4795d4e9224ec9503 /lib/record.c
parent2ed3ca2d783658c61c36bd4f6cab5f69d267bda0 (diff)
downloadgnutls-537ca1a7da03943ab569dc2445292935871159ed.tar.gz
record: reject 0-byte long ciphertext
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
Diffstat (limited to 'lib/record.c')
-rw-r--r--lib/record.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/record.c b/lib/record.c
index 5e35c1c264..68bb270c97 100644
--- a/lib/record.c
+++ b/lib/record.c
@@ -1108,10 +1108,13 @@ static int recv_headers(gnutls_session_t session,
record_check_version(session, htype, record->version)) < 0)
return gnutls_assert_val(ret);
- if (record->length > max_record_recv_size(session)) {
+ if (record->length == 0 || record->length > max_record_recv_size(session)) {
_gnutls_audit_log
(session, "Received packet with illegal length: %u\n",
(unsigned int) record->length);
+
+ if (record->length == 0)
+ return gnutls_assert_val(GNUTLS_E_DECRYPTION_FAILED);
return
gnutls_assert_val(GNUTLS_E_RECORD_OVERFLOW);
}