108 lines
3.8 KiB
Diff
108 lines
3.8 KiB
Diff
From 99760776d4552d8e63edd68ba4a7448766517b8c Mon Sep 17 00:00:00 2001
|
|
From: Jakub Jelen <jjelen@redhat.com>
|
|
Date: Mon, 13 Mar 2023 15:11:25 +0100
|
|
Subject: [PATCH] CVE-2023-1667:kex: Remove needless function argument
|
|
|
|
The information if the session is client or server session is already part of
|
|
the session structure so this argument only duplicated information.
|
|
|
|
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
|
|
Reviewed-by: Norbert Pocs <npocs@redhat.com>
|
|
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
|
|
|
|
Conflict:NA
|
|
Reference:https://gitlab.com/libssh/libssh-mirror/commit/99760776d4552d8e63edd68ba4a7448766517b8c
|
|
---
|
|
include/libssh/kex.h | 2 +-
|
|
src/client.c | 4 ++--
|
|
src/kex.c | 7 ++++---
|
|
src/server.c | 4 ++--
|
|
4 files changed, 9 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/include/libssh/kex.h b/include/libssh/kex.h
|
|
index 3a1f4a6..2ace69b 100644
|
|
--- a/include/libssh/kex.h
|
|
+++ b/include/libssh/kex.h
|
|
@@ -33,7 +33,7 @@ struct ssh_kex_struct {
|
|
|
|
SSH_PACKET_CALLBACK(ssh_packet_kexinit);
|
|
|
|
-int ssh_send_kex(ssh_session session, int server_kex);
|
|
+int ssh_send_kex(ssh_session session);
|
|
void ssh_list_kex(struct ssh_kex_struct *kex);
|
|
int ssh_set_client_kex(ssh_session session);
|
|
int ssh_kex_select_methods(ssh_session session);
|
|
diff --git a/src/client.c b/src/client.c
|
|
index 4eb798c..954ed39 100644
|
|
--- a/src/client.c
|
|
+++ b/src/client.c
|
|
@@ -420,7 +420,7 @@ static void ssh_client_connection_callback(ssh_session session)
|
|
if (rc != SSH_OK) {
|
|
goto error;
|
|
}
|
|
- rc = ssh_send_kex(session, 0);
|
|
+ rc = ssh_send_kex(session);
|
|
if (rc < 0) {
|
|
goto error;
|
|
}
|
|
@@ -439,7 +439,7 @@ static void ssh_client_connection_callback(ssh_session session)
|
|
if (rc != SSH_OK) {
|
|
goto error;
|
|
}
|
|
- rc = ssh_send_kex(session, 0);
|
|
+ rc = ssh_send_kex(session);
|
|
if (rc < 0) {
|
|
goto error;
|
|
}
|
|
diff --git a/src/kex.c b/src/kex.c
|
|
index 82071c7..4080a6b 100644
|
|
--- a/src/kex.c
|
|
+++ b/src/kex.c
|
|
@@ -830,9 +830,10 @@ int ssh_kex_select_methods (ssh_session session)
|
|
|
|
|
|
/* this function only sends the predefined set of kex methods */
|
|
-int ssh_send_kex(ssh_session session, int server_kex)
|
|
+int ssh_send_kex(ssh_session session)
|
|
{
|
|
- struct ssh_kex_struct *kex = (server_kex ? &session->next_crypto->server_kex :
|
|
+ struct ssh_kex_struct *kex = (session->server ?
|
|
+ &session->next_crypto->server_kex :
|
|
&session->next_crypto->client_kex);
|
|
ssh_string str = NULL;
|
|
int i;
|
|
@@ -929,7 +930,7 @@ int ssh_send_rekex(ssh_session session)
|
|
}
|
|
|
|
session->dh_handshake_state = DH_STATE_INIT;
|
|
- rc = ssh_send_kex(session, session->server);
|
|
+ rc = ssh_send_kex(session);
|
|
if (rc < 0) {
|
|
SSH_LOG(SSH_LOG_PACKET, "Failed to send kex");
|
|
return rc;
|
|
diff --git a/src/server.c b/src/server.c
|
|
index 080203f..2728d9b 100644
|
|
--- a/src/server.c
|
|
+++ b/src/server.c
|
|
@@ -366,7 +366,7 @@ static void ssh_server_connection_callback(ssh_session session){
|
|
ssh_packet_set_default_callbacks(session);
|
|
set_status(session, 0.5f);
|
|
session->session_state=SSH_SESSION_STATE_INITIAL_KEX;
|
|
- if (ssh_send_kex(session, 1) < 0) {
|
|
+ if (ssh_send_kex(session) < 0) {
|
|
goto error;
|
|
}
|
|
break;
|
|
@@ -379,7 +379,7 @@ static void ssh_server_connection_callback(ssh_session session){
|
|
if(server_set_kex(session) == SSH_ERROR)
|
|
goto error;
|
|
/* We are in a rekeying, so we need to send the server kex */
|
|
- if(ssh_send_kex(session, 1) < 0)
|
|
+ if (ssh_send_kex(session) < 0)
|
|
goto error;
|
|
}
|
|
ssh_list_kex(&session->next_crypto->client_kex); // log client kex
|
|
--
|
|
2.33.0
|
|
|