[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: libssh 0.8.4 with Cisco router
[Thread Prev] | [Thread Next]
- Subject: RE: libssh 0.8.4 with Cisco router
- From: Meng Hourk Tan <mtan@xxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Wed, 24 Oct 2018 08:52:12 +0000
- To: Andreas Schneider <asn@xxxxxxxxxxxxxx>, "libssh@xxxxxxxxxx" <libssh@xxxxxxxxxx>
- Cc: "jijo7thomas@xxxxxxxxx" <jijo7thomas@xxxxxxxxx>
Hi Andreas,
Here's the patch compliant to your coding style.
And I'm glad it helped you Jijo.
Regards,
Meng
________________________________
De : Andreas Schneider <asn@xxxxxxxxxxxxxx>
Envoyé : mercredi 24 octobre 2018 08:51
À : libssh@xxxxxxxxxx
Cc : Meng Hourk Tan; jijo7thomas@xxxxxxxxx
Objet : Re: libssh 0.8.4 with Cisco router
On Tuesday, 23 October 2018 18:09:25 CEST Meng Hourk Tan wrote:
> Hello,
Hello Meng,
> I had the same issue with some Cisco router:
>
> Some Cisco IOS do not send kex if they send the banner last (libssh as a
> client sent it first).
>
> In this situation, both libssh client and Cisco IOS server hang.
>
> Libssh client should send kex init as soon as banners are exchanged.
Thanks you very much for your patch.
Could you please change the patch to follow our coding style:
+ if (ssh_set_client_kex(session) < 0) {
+ goto error;
+ }
should for example use a helper variable for easier debugging:
rc = ssh_set_client_kex(session);
if (rc != SSH_OK) {
goto error;
}
Thanks,
Andreas
--
Andreas Schneider asn@xxxxxxxxxxxxxx
GPG-ID: 8DFF53E18F2ABC8D8F3C92237EE0FC4DCC014E3D
From c12bb4c2c1d3e2a7ac03ab7400c6be023f21df12 Mon Sep 17 00:00:00 2001
From: Meng Tan <mtan@xxxxxxxxxx>
Date: Wed, 24 Oct 2018 10:43:17 +0200
Subject: [PATCH] client: Send KEX as soon as banners are exchanged
Signed-off-by: Meng Tan <mtan@xxxxxxxxxx>
---
src/client.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/src/client.c b/src/client.c
index 859a86c6..d4b7ee57 100644
--- a/src/client.c
+++ b/src/client.c
@@ -411,6 +411,14 @@ static void ssh_client_connection_callback(ssh_session session)
ssh_packet_set_default_callbacks(session);
session->session_state = SSH_SESSION_STATE_INITIAL_KEX;
+ rc = ssh_set_client_kex(session);
+ if (rc != SSH_OK) {
+ goto error;
+ }
+ rc = ssh_send_kex(session, 0);
+ if (rc < 0) {
+ goto error;
+ }
set_status(session, 0.5f);
break;
@@ -420,14 +428,19 @@ static void ssh_client_connection_callback(ssh_session session)
case SSH_SESSION_STATE_KEXINIT_RECEIVED:
set_status(session,0.6f);
ssh_list_kex(&session->next_crypto->server_kex);
- if (ssh_set_client_kex(session) < 0) {
- goto error;
+ if (session->next_crypto->client_kex.methods[0] == NULL) {
+ /* in rekeying state if next_crypto client_kex is empty */
+ rc = ssh_set_client_kex(session);
+ if (rc != SSH_OK) {
+ goto error;
+ }
+ rc = ssh_send_kex(session, 0);
+ if (rc < 0) {
+ goto error;
+ }
}
if (ssh_kex_select_methods(session) == SSH_ERROR)
goto error;
- if (ssh_send_kex(session, 0) < 0) {
- goto error;
- }
set_status(session,0.8f);
session->session_state=SSH_SESSION_STATE_DH;
if (dh_handshake(session) == SSH_ERROR) {
--
2.11.0
| libssh 0.8.4 with Cisco router | jijo thomas <jijo7thomas@xxxxxxxxx> |
| RE: libssh 0.8.4 with Cisco router | Meng Hourk Tan <mtan@xxxxxxxxxx> |
| Re: libssh 0.8.4 with Cisco router | Andreas Schneider <asn@xxxxxxxxxxxxxx> |