1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-13 04:42:23 +03:00

server: Reformat ssh_server_connection_callback

Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Reviewed-by: Norbert Pocs <npocs@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Jakub Jelen
2023-03-14 11:25:16 +01:00
parent d726eca7d2
commit 41c63fa88d

View File

@@ -335,10 +335,11 @@ ssh_get_key_params(ssh_session session,
* @brief A function to be called each time a step has been done in the * @brief A function to be called each time a step has been done in the
* connection. * connection.
*/ */
static void ssh_server_connection_callback(ssh_session session){ static void ssh_server_connection_callback(ssh_session session)
{
int rc; int rc;
switch(session->session_state){ switch (session->session_state) {
case SSH_SESSION_STATE_NONE: case SSH_SESSION_STATE_NONE:
case SSH_SESSION_STATE_CONNECTING: case SSH_SESSION_STATE_CONNECTING:
case SSH_SESSION_STATE_SOCKET_CONNECTED: case SSH_SESSION_STATE_SOCKET_CONNECTED:
@@ -365,7 +366,7 @@ static void ssh_server_connection_callback(ssh_session session){
ssh_packet_set_default_callbacks(session); ssh_packet_set_default_callbacks(session);
set_status(session, 0.5f); set_status(session, 0.5f);
session->session_state=SSH_SESSION_STATE_INITIAL_KEX; session->session_state = SSH_SESSION_STATE_INITIAL_KEX;
if (ssh_send_kex(session, 1) < 0) { if (ssh_send_kex(session, 1) < 0) {
goto error; goto error;
} }
@@ -374,12 +375,12 @@ static void ssh_server_connection_callback(ssh_session session){
/* TODO: This state should disappear in favor of get_key handle */ /* TODO: This state should disappear in favor of get_key handle */
break; break;
case SSH_SESSION_STATE_KEXINIT_RECEIVED: case SSH_SESSION_STATE_KEXINIT_RECEIVED:
set_status(session,0.6f); set_status(session, 0.6f);
if(session->next_crypto->server_kex.methods[0]==NULL){ if (session->next_crypto->server_kex.methods[0] == NULL) {
if(server_set_kex(session) == SSH_ERROR) if (server_set_kex(session) == SSH_ERROR)
goto error; goto error;
/* We are in a rekeying, so we need to send the server kex */ /* 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, 1) < 0)
goto error; goto error;
} }
ssh_list_kex(&session->next_crypto->client_kex); // log client kex ssh_list_kex(&session->next_crypto->client_kex); // log client kex
@@ -388,11 +389,11 @@ static void ssh_server_connection_callback(ssh_session session){
} }
if (crypt_set_algorithms_server(session) == SSH_ERROR) if (crypt_set_algorithms_server(session) == SSH_ERROR)
goto error; goto error;
set_status(session,0.8f); set_status(session, 0.8f);
session->session_state=SSH_SESSION_STATE_DH; session->session_state = SSH_SESSION_STATE_DH;
break; break;
case SSH_SESSION_STATE_DH: case SSH_SESSION_STATE_DH:
if(session->dh_handshake_state==DH_STATE_FINISHED){ if (session->dh_handshake_state == DH_STATE_FINISHED) {
rc = ssh_packet_set_newkeys(session, SSH_DIRECTION_IN); rc = ssh_packet_set_newkeys(session, SSH_DIRECTION_IN);
if (rc != SSH_OK) { if (rc != SSH_OK) {
@@ -406,15 +407,16 @@ static void ssh_server_connection_callback(ssh_session session){
*/ */
if (session->extensions & SSH_EXT_NEGOTIATION && if (session->extensions & SSH_EXT_NEGOTIATION &&
session->session_state != SSH_SESSION_STATE_AUTHENTICATED) { session->session_state != SSH_SESSION_STATE_AUTHENTICATED) {
/* /*
* Only send an SSH_MSG_EXT_INFO message the first time the client * Only send an SSH_MSG_EXT_INFO message the first time the
* undergoes NEWKEYS. It is unexpected for this message to be sent * client undergoes NEWKEYS. It is unexpected for this message
* upon rekey, and may cause clients to log error messages. * to be sent upon rekey, and may cause clients to log error
* messages.
* *
* The session_state can not be used for this purpose because it is * The session_state can not be used for this purpose because it
* re-set to SSH_SESSION_STATE_KEXINIT_RECEIVED during rekey. So, * is re-set to SSH_SESSION_STATE_KEXINIT_RECEIVED during rekey.
* use the connected flag which transitions from non-zero below. * So, use the connected flag which transitions from non-zero
* below.
* *
* See also: * See also:
* - https://bugzilla.mindrot.org/show_bug.cgi?id=2929 * - https://bugzilla.mindrot.org/show_bug.cgi?id=2929
@@ -424,9 +426,9 @@ static void ssh_server_connection_callback(ssh_session session){
} }
} }
set_status(session,1.0f); set_status(session, 1.0f);
session->connected = 1; session->connected = 1;
session->session_state=SSH_SESSION_STATE_AUTHENTICATING; session->session_state = SSH_SESSION_STATE_AUTHENTICATING;
if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED) if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED)
session->session_state = SSH_SESSION_STATE_AUTHENTICATED; session->session_state = SSH_SESSION_STATE_AUTHENTICATED;
@@ -437,14 +439,15 @@ static void ssh_server_connection_callback(ssh_session session){
case SSH_SESSION_STATE_ERROR: case SSH_SESSION_STATE_ERROR:
goto error; goto error;
default: default:
ssh_set_error(session,SSH_FATAL,"Invalid state %d",session->session_state); ssh_set_error(session, SSH_FATAL, "Invalid state %d",
session->session_state);
} }
return; return;
error: error:
ssh_socket_close(session->socket); ssh_socket_close(session->socket);
session->alive = 0; session->alive = 0;
session->session_state=SSH_SESSION_STATE_ERROR; session->session_state = SSH_SESSION_STATE_ERROR;
} }
/** /**