X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/c19a50ed930f391506dc660a01090a51d659acd3..feb02b4e2d7935972dc94bb78bf1a36bb7bdd1b3:/windows/winstore.c diff --git a/windows/winstore.c b/windows/winstore.c index f454f172..31aa6372 100644 --- a/windows/winstore.c +++ b/windows/winstore.c @@ -82,13 +82,14 @@ void *open_settings_w(const char *sessionname, char **errmsg) 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); + 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); } /*