From: Jacob Nevins Date: Sun, 9 Nov 2014 00:12:51 +0000 (+0000) Subject: Merge reconfig fixes from branch 'pre-0.64'. X-Git-Tag: 0.68~646 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=0ab2e03ef2dba047c5e2bd5faf346b42b445fb70;hp=8ab1433caaefef02a19e8e5ea74e5259fa719eae;p=PuTTY.git Merge reconfig fixes from branch 'pre-0.64'. --- diff --git a/config.c b/config.c index e126d4dc..0d292b8a 100644 --- a/config.c +++ b/config.c @@ -2137,7 +2137,8 @@ void setup_config_box(struct controlbox *b, int midsession, ctrl_settitle(b, "Connection/SSH", "Options controlling SSH connections"); - if (midsession && protcfginfo == 1) { + /* SSH-1 or connection-sharing downstream */ + if (midsession && (protcfginfo == 1 || protcfginfo == -1)) { s = ctrl_getset(b, "Connection/SSH", "disclaimer", NULL); ctrl_text(s, "Nothing on this panel may be reconfigured in mid-" "session; it is only here so that sub-panels of it can " @@ -2159,7 +2160,7 @@ void setup_config_box(struct controlbox *b, int midsession, I(CONF_ssh_no_shell)); } - if (!midsession || protcfginfo != 1) { + if (!midsession || !(protcfginfo == 1 || protcfginfo == -1)) { s = ctrl_getset(b, "Connection/SSH", "protocol", "Protocol options"); ctrl_checkbox(s, "Enable compression", 'e', @@ -2203,10 +2204,11 @@ void setup_config_box(struct controlbox *b, int midsession, /* * The Connection/SSH/Kex panel. (Owing to repeat key - * exchange, this is all meaningful in mid-session _if_ - * we're using SSH-2 or haven't decided yet.) + * exchange, much of this is meaningful in mid-session _if_ + * we're using SSH-2 and are not a connection-sharing + * downstream, or haven't decided yet.) */ - if (protcfginfo != 1) { + if (protcfginfo != 1 && protcfginfo != -1) { ctrl_settitle(b, "Connection/SSH/Kex", "Options controlling SSH key exchange"); @@ -2232,7 +2234,14 @@ void setup_config_box(struct controlbox *b, int midsession, I(16)); ctrl_text(s, "(Use 1M for 1 megabyte, 1G for 1 gigabyte etc)", HELPCTX(ssh_kex_repeat)); + } + /* + * Manual host key configuration is irrelevant mid-session, + * as we enforce that the host key for rekeys is the + * same as that used at the start of the session. + */ + if (!midsession) { s = ctrl_getset(b, "Connection/SSH/Kex", "hostkeys", "Manually configure host keys for this connection"); @@ -2270,7 +2279,7 @@ void setup_config_box(struct controlbox *b, int midsession, ctrl_columns(s, 1, 100); } - if (!midsession || protcfginfo != 1) { + if (!midsession || !(protcfginfo == 1 || protcfginfo == -1)) { /* * The Connection/SSH/Cipher panel. */ diff --git a/ssh.c b/ssh.c index 2dc8a081..c2af9e80 100644 --- a/ssh.c +++ b/ssh.c @@ -11321,13 +11321,19 @@ static int ssh_return_exitcode(void *handle) } /* - * cfg_info for SSH is the currently running version of the - * protocol. (1 for 1; 2 for 2; 0 for not-decided-yet.) + * cfg_info for SSH is the protocol running in this session. + * (1 or 2 for the full SSH-1 or SSH-2 protocol; -1 for the bare + * SSH-2 connection protocol, i.e. a downstream; 0 for not-decided-yet.) */ static int ssh_cfg_info(void *handle) { Ssh ssh = (Ssh) handle; - return ssh->version; + if (ssh->version == 0) + return 0; /* don't know yet */ + else if (ssh->bare_connection) + return -1; + else + return ssh->version; } /*