SSH-2 rekey bug compatibility setting wasn't being saved
[u/mdw/putty] / settings.c
index 4058b7d..6197c1e 100644 (file)
@@ -2,6 +2,7 @@
  * settings.c: read and write saved sessions. (platform-independent)
  */
 
+#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include "putty.h"
@@ -172,6 +173,7 @@ static void gprefs(void *sesskey, char *name, char *def,
                   int *array)
 {
     char commalist[80];
+    char *tokarg = commalist;
     int n;
     unsigned long seen = 0;           /* bitmap for weeding dups etc */
     gpps(sesskey, name, def, commalist, sizeof(commalist));
@@ -181,7 +183,8 @@ static void gprefs(void *sesskey, char *name, char *def,
     do {
        int v;
        char *key;
-       key = strtok(n==0 ? commalist : NULL, ","); /* sorry */
+       key = strtok(tokarg, ","); /* sorry */
+       tokarg = NULL;
        if (!key) break;
        if (((v = key2val(mapping, nvals, key)) != -1) &&
            !(seen & 1<<v)) {
@@ -194,6 +197,7 @@ static void gprefs(void *sesskey, char *name, char *def,
     {
        int i;
        for (i = 0; i < nvals; i++) {
+           assert(mapping[i].v < 32);
            if (!(seen & 1<<mapping[i].v)) {
                array[n] = mapping[i].v;
                n++;
@@ -300,6 +304,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg)
     wprefs(sesskey, "KEX", kexnames, KEX_MAX, cfg->ssh_kexlist);
     write_setting_i(sesskey, "RekeyTime", cfg->ssh_rekey_time);
     write_setting_s(sesskey, "RekeyBytes", cfg->ssh_rekey_data);
+    write_setting_i(sesskey, "SshNoAuth", cfg->ssh_no_userauth);
     write_setting_i(sesskey, "AuthTIS", cfg->try_tis_auth);
     write_setting_i(sesskey, "AuthKI", cfg->try_ki_auth);
     write_setting_i(sesskey, "SshNoShell", cfg->ssh_no_shell);
@@ -423,6 +428,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg)
     write_setting_i(sesskey, "BugDeriveKey2", 2-cfg->sshbug_derivekey2);
     write_setting_i(sesskey, "BugRSAPad2", 2-cfg->sshbug_rsapad2);
     write_setting_i(sesskey, "BugPKSessID2", 2-cfg->sshbug_pksessid2);
+    write_setting_i(sesskey, "BugRekey2", 2-cfg->sshbug_rekey2);
     write_setting_i(sesskey, "StampUtmp", cfg->stamp_utmp);
     write_setting_i(sesskey, "LoginShell", cfg->login_shell);
     write_setting_i(sesskey, "ScrollbarOnLeft", cfg->scrollbar_on_left);
@@ -572,6 +578,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg)
         sizeof(cfg->ssh_rekey_data));
     gppi(sesskey, "SshProt", 2, &cfg->sshprot);
     gppi(sesskey, "SSH2DES", 0, &cfg->ssh2_des_cbc);
+    gppi(sesskey, "SshNoAuth", 0, &cfg->ssh_no_userauth);
     gppi(sesskey, "AuthTIS", 0, &cfg->try_tis_auth);
     gppi(sesskey, "AuthKI", 1, &cfg->try_ki_auth);
     gppi(sesskey, "SshNoShell", 0, &cfg->ssh_no_shell);