Nikolay Sivov : regedit: Fix potential buffer leak, simplify error handling (Coverity).

Alexandre Julliard julliard at wine.codeweavers.com
Tue Dec 22 14:06:50 CST 2015


Module: wine
Branch: master
Commit: c9fb3b7f8f1924e58ccc36caa73617f366853d3c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c9fb3b7f8f1924e58ccc36caa73617f366853d3c

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Dec 22 00:55:00 2015 +0300

regedit: Fix potential buffer leak, simplify error handling (Coverity).

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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;
 }




More information about the wine-cvs mailing list