summaryrefslogtreecommitdiff
path: root/lib/record.c
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@redhat.com>2018-10-28 07:57:57 +0100
committerDaiki Ueno <dueno@redhat.com>2018-11-11 07:03:43 +0100
commit18ae87bb085df1caf2a81b1cd3e81b69e9fb0c45 (patch)
tree237c0966f7f76dd5a635e3ae1defe4a9a64433ff /lib/record.c
parent63e8714d8b4dcb4ccb78972e0b69a52d8c3850c8 (diff)
downloadgnutls-18ae87bb085df1caf2a81b1cd3e81b69e9fb0c45.tar.gz
record: fix memleak when rejecting early data
The "discard" label previously used assumes that the decrypted record is already added to record_recv_buffer. It is not the case when rejecting early data. Release the allocated memory manually and return early. Signed-off-by: Daiki Ueno <dueno@redhat.com>
Diffstat (limited to 'lib/record.c')
-rw-r--r--lib/record.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/record.c b/lib/record.c
index 87b9dee304..9372e8ae03 100644
--- a/lib/record.c
+++ b/lib/record.c
@@ -1401,7 +1401,9 @@ _gnutls_recv_in_buffers(gnutls_session_t session, content_type_t type,
(unsigned int)
record.length);
session->internals.early_data_received += record.length;
- goto discard;
+ /* silently discard received data */
+ _mbuffer_xfree(&decrypted);
+ return gnutls_assert_val(GNUTLS_E_AGAIN);
} else {
session->internals.hsk_flags &= ~HSK_EARLY_DATA_IN_FLIGHT;
}