]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - ssh.c
rm some magic numbers in ssh_setup_portfwd()
[PuTTY.git] / ssh.c
diff --git a/ssh.c b/ssh.c
index 58e72f5083856effe9fd9fdc51bf3b31cfed8072..0435dd7ec25373c3b02affcad1bd9960bc6192a4 100644 (file)
--- 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);