summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-01-03 13:49:18 +0100
committerNikos Mavrogiannopoulos <nmav@redhat.com>2017-01-05 09:02:12 +0100
commitb3e7e78a5a1b72d76f2a0934f8fc21421b04e661 (patch)
tree7baf2911ee87a31afc18aa1bed61bd7e11af6105
parente7c3768844cdaae526d17816ea4a8df1f2da75ec (diff)
downloadgnutls-b3e7e78a5a1b72d76f2a0934f8fc21421b04e661.tar.gz
proc_server_kx: eliminated leak on error path
Issue found using oss-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=272 Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--lib/auth/dh_common.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/auth/dh_common.c b/lib/auth/dh_common.c
index f9e2b36649..405579b926 100644
--- a/lib/auth/dh_common.c
+++ b/lib/auth/dh_common.c
@@ -262,8 +262,11 @@ _gnutls_proc_dh_common_server_kx(gnutls_session_t session,
if (_gnutls_mpi_init_scan_nz(&session->key.dh_params.params[DH_P], data_p, _n_p) != 0) {
gnutls_assert();
+ /* we release now because session->key.dh_params.params_nr is not yet set */
+ _gnutls_mpi_release(&session->key.dh_params.params[DH_G]);
return GNUTLS_E_MPI_SCAN_FAILED;
}
+
session->key.dh_params.params_nr = 3; /* include empty q */
session->key.dh_params.algo = GNUTLS_PK_DH;