diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-10-28 07:57:57 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2018-10-29 10:19:40 +0100 |
commit | 66ff2535625e8f5e9ceabde96f80d5c979c928a2 (patch) | |
tree | 953fb95e14204d9d866109e05090c1137dbc2478 | |
parent | 2ee51cc8d81be7a8a3da78817f80e360453f8323 (diff) | |
download | gnutls-66ff2535625e8f5e9ceabde96f80d5c979c928a2.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>
-rw-r--r-- | lib/record.c | 4 |
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; } |