diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c --- a/PC/bdist_wininst/install.c +++ b/PC/bdist_wininst/install.c @@ -2366,23 +2366,27 @@ void DeleteRegistryKey(char *string) char *delim; HKEY hKey; long result; char *line; line = strdup(string); /* so we can change it */ keyname = strchr(line, '['); - if (!keyname) + if (!keyname) { + free(line); return; + } ++keyname; subkeyname = strchr(keyname, ']'); - if (!subkeyname) + if (!subkeyname) { + free(line); return; + } *subkeyname++='\0'; delim = strchr(subkeyname, '\n'); if (delim) *delim = '\0'; result = RegOpenKeyEx(hkey_root, keyname, 0, @@ -2408,26 +2412,32 @@ void DeleteRegistryValue(char *string) HKEY hKey; long result; char *line; line = strdup(string); /* so we can change it */ /* Format is 'Reg DB Value: [key]name=value' */ keyname = strchr(line, '['); - if (!keyname) + if (!keyname) { + free(line); return; + } ++keyname; valuename = strchr(keyname, ']'); - if (!valuename) + if (!valuename) { + free(line); return; + } *valuename++ = '\0'; value = strchr(valuename, '='); - if (!value) + if (!value) { + free(line); return; + } *value++ = '\0'; result = RegOpenKeyEx(hkey_root, keyname, 0, KEY_WRITE, &hKey);