Introduce a new checkbox and command-line option to inhibit use of
[u/mdw/putty] / windows / winstore.c
index 3ce84e0..31aa637 100644 (file)
@@ -78,17 +78,18 @@ void *open_settings_w(const char *sessionname, char **errmsg)
     if (ret != ERROR_SUCCESS) {
        sfree(p);
         *errmsg = dupprintf("Unable to create registry key\n"
-                            "HKEY_CURRENT_USER%s", puttystr);
+                            "HKEY_CURRENT_USER\\%s", puttystr);
        return NULL;
     }
     ret = RegCreateKey(subkey1, p, &sesskey);
-    sfree(p);
     RegCloseKey(subkey1);
     if (ret != ERROR_SUCCESS) {
         *errmsg = dupprintf("Unable to create registry key\n"
-                            "HKEY_CURRENT_USER%s\\%s", puttystr, p);
+                            "HKEY_CURRENT_USER\\%s\\%s", puttystr, p);
+       sfree(p);
        return NULL;
     }
+    sfree(p);
     return (void *) sesskey;
 }
 
@@ -103,7 +104,7 @@ void write_setting_i(void *handle, const char *key, int value)
 {
     if (handle)
        RegSetValueEx((HKEY) handle, key, 0, REG_DWORD,
-                     (CONST BYTE *) & value, sizeof(value));
+                     (CONST BYTE *) &value, sizeof(value));
 }
 
 void close_settings_w(void *handle)
@@ -156,7 +157,7 @@ int read_setting_i(void *handle, const char *key, int defvalue)
 
     if (!handle ||
        RegQueryValueEx((HKEY) handle, key, 0, &type,
-                       (BYTE *) & val, &size) != ERROR_SUCCESS ||
+                       (BYTE *) &val, &size) != ERROR_SUCCESS ||
        size != sizeof(val) || type != REG_DWORD)
        return defvalue;
     else
@@ -405,10 +406,12 @@ void store_host_key(const char *hostname, int port,
     hostkey_regname(regname, hostname, port, keytype);
 
     if (RegCreateKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys",
-                    &rkey) != ERROR_SUCCESS)
-       return;                        /* key does not exist in registry */
-    RegSetValueEx(rkey, regname, 0, REG_SZ, key, strlen(key) + 1);
-    RegCloseKey(rkey);
+                    &rkey) == ERROR_SUCCESS) {
+       RegSetValueEx(rkey, regname, 0, REG_SZ, key, strlen(key) + 1);
+       RegCloseKey(rkey);
+    } /* else key does not exist in registry */
+
+    sfree(regname);
 }
 
 /*