From 9bf696b19e8cdceb6fe9d3e5a9683f2a04d8bfe1 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 27 Mar 2002 21:58:11 +0000 Subject: [PATCH] Remember to wait for SSH1_MSG_SUCCESS after enabling remote port forwardings in SSH1. Was causing several MSG_SUCCESS to be queued up unread, which was wrong-but-benign in most cases but caused a hard crash with compression enabled (one of those uncompressed MSG_SUCCESSes was fed to the zlib decompressor with spectacular results). git-svn-id: svn://svn.tartarus.org/sgt/putty@1609 cda61777-01e9-0310-a592-d414129be87e --- ssh.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ssh.c b/ssh.c index 6a653e5e..c05abe28 100644 --- a/ssh.c +++ b/ssh.c @@ -2831,7 +2831,8 @@ static void ssh1_protocol(unsigned char *in, int inlen, int ispkt) } { - char type, *e; + char type; + static char *e; int n; int sport,dport,sserv,dserv; char sports[256], dports[256], host[256]; @@ -2924,6 +2925,18 @@ static void ssh1_protocol(unsigned char *in, int inlen, int ispkt) PKT_STR, host, PKT_INT, dport, PKT_END); + do { + crReturnV; + } while (!ispkt); + if (pktin.type != SSH1_SMSG_SUCCESS + && pktin.type != SSH1_SMSG_FAILURE) { + bombout(("Protocol confusion")); + crReturnV; + } else if (pktin.type == SSH1_SMSG_FAILURE) { + c_write_str("Server refused port forwarding\r\n"); + ssh_editing = ssh_echoing = 1; + } + logevent("Remote port forwarding enabled"); } } } -- 2.11.0