aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-09-15 22:35:16 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2011-09-18 20:34:15 +0200
commit1b10b175fcd5c6f205168434cc5f6aca51b1d298 (patch)
tree236262411cba8635b665a4738dd358f231dd3fda
parent8f1161f64968b6df250e0b3f3b0f952ccdcf85ad (diff)
downloadlibssh-1b10b175fcd5c6f205168434cc5f6aca51b1d298.tar.gz
libssh-1b10b175fcd5c6f205168434cc5f6aca51b1d298.tar.xz
libssh-1b10b175fcd5c6f205168434cc5f6aca51b1d298.zip
dh: fix segfault in server
-rw-r--r--src/dh.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dh.c b/src/dh.c
index 36e77d6f..34d4e907 100644
--- a/src/dh.c
+++ b/src/dh.c
@@ -686,11 +686,16 @@ int make_sessionid(ssh_session session) {
ssh_string_free(num);
#ifdef HAVE_ECDH
- } else if (session->next_crypto->kex_type == SSH_KEX_ECDH_SHA2_NISTP256){
+ } else if (session->next_crypto->kex_type == SSH_KEX_ECDH_SHA2_NISTP256){
+ if(session->next_crypto->ecdh_client_pubkey == NULL ||
+ session->next_crypto->ecdh_server_pubkey == NULL){
+ ssh_log(session,SSH_LOG_WARNING,"ECDH parameted missing");
+ goto error;
+ }
buffer_add_ssh_string(buf,session->next_crypto->ecdh_client_pubkey);
buffer_add_ssh_string(buf,session->next_crypto->ecdh_server_pubkey);
#endif
- }
+ }
num = make_bignum_string(session->next_crypto->k);
if (num == NULL) {
goto error;