X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/6da411554bfe4c2a8ddfbb0616b0030ea5e813f5..985b644054f5e0d777184c48bfd8a97e824705fd:/windows/winstore.c diff --git a/windows/winstore.c b/windows/winstore.c index 3ce84e06..31aa6372 100644 --- a/windows/winstore.c +++ b/windows/winstore.c @@ -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); } /*