summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltán Fridrich <zfridric@redhat.com>2022-10-26 10:06:28 +0000
committerZoltán Fridrich <zfridric@redhat.com>2022-10-26 10:06:28 +0000
commit8610f63f5a757b6f688bf44cb4c52609f48fdb5e (patch)
tree924272d350621181616f0f9f22d99b65ae16b97a
parentd002a577068125f917197ae5801a205e87f46fce (diff)
parentfd4ba71a77f4325e0ccc424c0902413d24c639c1 (diff)
downloadgnutls-8610f63f5a757b6f688bf44cb4c52609f48fdb5e.tar.gz
Merge branch 'zfridric_devel' into 'master'
Fix handshake segfault if no privkey is supplied Closes #1412 See merge request gnutls/gnutls!1657
-rw-r--r--lib/auth/cert.c3
-rw-r--r--lib/privkey.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/auth/cert.c b/lib/auth/cert.c
index 454070642c..228d98468a 100644
--- a/lib/auth/cert.c
+++ b/lib/auth/cert.c
@@ -1640,6 +1640,9 @@ _gnutls_select_server_cert(gnutls_session_t session, const gnutls_cipher_suite_e
gnutls_pk_get_name(session->internals.selected_cert_list[0].pubkey->params.algo));
}
+ if (session->internals.selected_key == NULL)
+ return gnutls_assert_val(GNUTLS_E_INSUFFICIENT_CREDENTIALS);
+
ret = cert_select_sign_algorithm(session,
&session->internals.selected_cert_list[0],
session->internals.selected_key,
diff --git a/lib/privkey.c b/lib/privkey.c
index 2069fc016a..2ec87dd4c7 100644
--- a/lib/privkey.c
+++ b/lib/privkey.c
@@ -1972,6 +1972,9 @@ unsigned _gnutls_privkey_compatible_with_sig(gnutls_privkey_t privkey,
{
const gnutls_sign_entry_st *se;
+ if (unlikely(privkey == NULL))
+ return gnutls_assert_val(0);
+
se = _gnutls_sign_to_entry(sign);
if (unlikely(se == NULL))
return gnutls_assert_val(0);