summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2019-11-07 22:12:43 +0000
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2019-11-07 22:12:43 +0000
commit570a13f5eeeb1ffcf2c4d57b2f5230560d0950fa (patch)
tree39a2e6408acb206bdd0c21c78a67af1a2e282d95 /lib
parent03fe7c089122ec50231012df3a6bfbc4a464f229 (diff)
parentba6b9689b8952401a54ff9b8ea54ac1cd31c95d0 (diff)
downloadgnutls-570a13f5eeeb1ffcf2c4d57b2f5230560d0950fa.tar.gz
Merge branch 'prf-crash' into 'master'
prf: don't crash when called before handshake completion See merge request gnutls/gnutls!1116
Diffstat (limited to 'lib')
-rw-r--r--lib/prf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/prf.c b/lib/prf.c
index 107f477081..bb76e2ed4e 100644
--- a/lib/prf.c
+++ b/lib/prf.c
@@ -80,6 +80,9 @@ gnutls_prf_raw(gnutls_session_t session,
if (vers && vers->tls13_sem)
return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+ if (session->security_parameters.prf == NULL)
+ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+
ret = _gnutls_prf_raw(session->security_parameters.prf->id,
GNUTLS_MASTER_SIZE, session->security_parameters.master_secret,
label_size, label,
@@ -165,6 +168,9 @@ gnutls_prf_rfc5705(gnutls_session_t session,
const version_entry_st *vers = get_version(session);
int ret;
+ if (session->security_parameters.prf == NULL)
+ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+
if (vers && vers->tls13_sem) {
ret = _tls13_derive_exporter(session->security_parameters.prf,
session,
@@ -309,6 +315,9 @@ gnutls_prf(gnutls_session_t session,
return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
}
+ if (session->security_parameters.prf == NULL)
+ return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
+
seed = gnutls_malloc(seedsize);
if (!seed) {
gnutls_assert();