https://git.reactos.org/?p=reactos.git;a=commitdiff;h=0461de33c5de3fee70a00…
commit 0461de33c5de3fee70a004b2f9c9e03ca70cfc67
Author: Kyle Katarn <contact(a)kcsoftwares.com>
AuthorDate: Tue May 5 10:44:45 2020 +0200
Commit: GitHub <noreply(a)github.com>
CommitDate: Tue May 5 11:44:45 2020 +0300
[REGEDIT] Fix HeapFree() on the wrong variable (#2736)
- When exporting registry keys (to .reg files) some variables from the heap are not
free'd while the debug log indicates "HEAP: Trying to free an invalid
address".
- This is due to the export_registry_key() function that calls
HeapFree() for reg_key_name. But this variable is an argument provided by the caller,
which is always a statically defined array of WCHAR.
- Meanwhile reg_key_name_buf is never free'd and cause a memory leak each time the
function gets called.
---
base/applications/regedit/regproc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/base/applications/regedit/regproc.c b/base/applications/regedit/regproc.c
index c17221df5ae..41ac7c6be8b 100644
--- a/base/applications/regedit/regproc.c
+++ b/base/applications/regedit/regproc.c
@@ -1392,7 +1392,7 @@ BOOL export_registry_key(WCHAR *file_name, WCHAR *reg_key_name,
DWORD format)
if (file) {
fclose(file);
}
- HeapFree(GetProcessHeap(), 0, reg_key_name);
+ HeapFree(GetProcessHeap(), 0, reg_key_name_buf);
HeapFree(GetProcessHeap(), 0, val_name_buf);
HeapFree(GetProcessHeap(), 0, val_buf);
HeapFree(GetProcessHeap(), 0, line_buf);