X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/32874aeac8dacbca26663777b39a79efc5d8dc4b..5dc6132d3a8e6e4048698bf1914b486f9cf41e2c:/winstore.c diff --git a/winstore.c b/winstore.c index 651fbad6..bc7bb5b1 100644 --- a/winstore.c +++ b/winstore.c @@ -181,7 +181,7 @@ void *enum_settings_start(void) struct enumsettings *ret; HKEY key; - if (RegCreateKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS) + if (RegOpenKey(HKEY_CURRENT_USER, puttystr, &key) != ERROR_SUCCESS) return NULL; ret = smalloc(sizeof(*ret)); @@ -198,14 +198,14 @@ char *enum_settings_next(void *handle, char *buffer, int buflen) struct enumsettings *e = (struct enumsettings *) handle; char *otherbuf; otherbuf = smalloc(3 * buflen); - if (otherbuf && RegEnumKey(e->key, e->i++, otherbuf, - 3 * buflen) == ERROR_SUCCESS) { + if (RegEnumKey(e->key, e->i++, otherbuf, 3 * buflen) == ERROR_SUCCESS) { unmungestr(otherbuf, buffer, buflen); sfree(otherbuf); return buffer; - } else + } else { + sfree(otherbuf); return NULL; - + } } void enum_settings_finish(void *handle) @@ -246,8 +246,8 @@ int verify_host_key(char *hostname, int port, char *keytype, char *key) hostkey_regname(regname, hostname, port, keytype); - if (RegCreateKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys", - &rkey) != ERROR_SUCCESS) + if (RegOpenKey(HKEY_CURRENT_USER, PUTTY_REG_POS "\\SshHostKeys", + &rkey) != ERROR_SUCCESS) return 1; /* key does not exist in registry */ readlen = len;