[PATCH] programs/regedit: Fix potential buffer leak, simplify error handling (Coverity)
Nikolay Sivov
nsivov at codeweavers.com
Mon Dec 21 15:55:00 CST 2015
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
programs/regedit/treeview.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/programs/regedit/treeview.c b/programs/regedit/treeview.c
index 008e6a1..7afc7bf 100644
--- a/programs/regedit/treeview.c
+++ b/programs/regedit/treeview.c
@@ -95,17 +95,17 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKe
LPWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey)
{
- int pathLen = 0, maxLen;
+ int pathLen = 0, maxLen = 1024;
WCHAR *pathBuffer;
- pathBuffer = HeapAlloc(GetProcessHeap(), 0, 1024*sizeof(WCHAR));
+ if (!hItem) {
+ hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_CARET, 0);
+ if (!hItem) return NULL;
+ }
+
+ pathBuffer = HeapAlloc(GetProcessHeap(), 0, maxLen*sizeof(WCHAR));
if (!pathBuffer) return NULL;
*pathBuffer = 0;
- maxLen = HeapSize(GetProcessHeap(), 0, pathBuffer);
- if (maxLen == (SIZE_T) - 1) return NULL;
- maxLen = maxLen / sizeof(WCHAR);
- if (!hItem) hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_CARET, 0);
- if (!hItem) return NULL;
if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen)) return NULL;
return pathBuffer;
}
--
2.6.4
More information about the wine-patches
mailing list