X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=ssh.c;h=0435dd7ec25373c3b02affcad1bd9960bc6192a4;hb=8316deb3399fe1d0c406132cf2e795a76de26b64;hp=58e72f5083856effe9fd9fdc51bf3b31cfed8072;hpb=fceaa2e4a738c7dc7074608a2ee7f35d17d44699;p=PuTTY.git diff --git a/ssh.c b/ssh.c index 58e72f50..0435dd7e 100644 --- a/ssh.c +++ b/ssh.c @@ -2383,7 +2383,8 @@ static void ssh_process_queued_incoming_data(Ssh ssh) static void ssh_set_frozen(Ssh ssh, int frozen) { - sk_set_frozen(ssh->s, frozen); + if (ssh->s) + sk_set_frozen(ssh->s, frozen); ssh->frozen = frozen; } @@ -2932,6 +2933,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, if (s->dlgret == 0) { ssh->close_expected = TRUE; ssh_closing((Plug)ssh, NULL, 0, 0); + crStop(0); } } @@ -3012,6 +3014,7 @@ static int do_ssh1_login(Ssh ssh, unsigned char *in, int inlen, if (s->dlgret == 0) { ssh->close_expected = TRUE; ssh_closing((Plug)ssh, NULL, 0, 0); + crStop(0); } } } @@ -3908,7 +3911,7 @@ static void ssh_setup_portfwd(Ssh ssh, const Config *cfg) strcpy(saddr, sports); n = 0; } - if (n < 255) sports[n++] = *portfwd_strptr++; + if (n < lenof(sports)-1) sports[n++] = *portfwd_strptr++; } sports[n] = 0; if (type != 'D') { @@ -3916,14 +3919,14 @@ static void ssh_setup_portfwd(Ssh ssh, const Config *cfg) portfwd_strptr++; n = 0; while (*portfwd_strptr && *portfwd_strptr != ':') { - if (n < 255) host[n++] = *portfwd_strptr++; + if (n < lenof(host)-1) host[n++] = *portfwd_strptr++; } host[n] = 0; if (*portfwd_strptr == ':') portfwd_strptr++; n = 0; while (*portfwd_strptr) { - if (n < 255) dports[n++] = *portfwd_strptr++; + if (n < lenof(dports)-1) dports[n++] = *portfwd_strptr++; } dports[n] = 0; portfwd_strptr++; @@ -4618,6 +4621,8 @@ static void do_ssh1_connection(Ssh ssh, unsigned char *in, int inlen, */ { char *cmd = ssh->cfg.remote_cmd_ptr; + + if (!cmd) cmd = ssh->cfg.remote_cmd; if (ssh->cfg.ssh_subsys && ssh->cfg.remote_cmd_ptr2) { cmd = ssh->cfg.remote_cmd_ptr2; @@ -5217,6 +5222,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen, if (s->dlgret == 0) { ssh->close_expected = TRUE; ssh_closing((Plug)ssh, NULL, 0, 0); + crStop(0); } } @@ -5241,6 +5247,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen, if (s->dlgret == 0) { ssh->close_expected = TRUE; ssh_closing((Plug)ssh, NULL, 0, 0); + crStop(0); } } @@ -5265,6 +5272,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen, if (s->dlgret == 0) { ssh->close_expected = TRUE; ssh_closing((Plug)ssh, NULL, 0, 0); + crStop(0); } } @@ -7323,6 +7331,7 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, } else { subsys = ssh->cfg.ssh_subsys; cmd = ssh->cfg.remote_cmd_ptr; + if (!cmd) cmd = ssh->cfg.remote_cmd; } s->pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST);