Sven Baars : winemenubuilder: Use the full path name when extracting an icon.

Alexandre Julliard julliard at winehq.org
Thu Mar 31 15:21:01 CDT 2022


Module: wine
Branch: master
Commit: 3cac7e1d0c11945cebec8c0d2e77b751d2f8067f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=3cac7e1d0c11945cebec8c0d2e77b751d2f8067f

Author: Sven Baars <sbaars at codeweavers.com>
Date:   Thu Mar 31 12:54:47 2022 +0200

winemenubuilder: Use the full path name when extracting an icon.

Signed-off-by: Sven Baars <sbaars at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/winemenubuilder/winemenubuilder.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c
index a2aa5eef0e4..1579ca8dafa 100644
--- a/programs/winemenubuilder/winemenubuilder.c
+++ b/programs/winemenubuilder/winemenubuilder.c
@@ -1146,16 +1146,25 @@ static WCHAR *extract_icon(LPCWSTR icoPathW, int index, const WCHAR *destFilenam
     int numEntries;
     HRESULT hr;
     WCHAR *nativeIdentifier = NULL;
+    WCHAR fullPathW[MAX_PATH];
+    DWORD len;
 
     WINE_TRACE("path=[%s] index=%d destFilename=[%s]\n", wine_dbgstr_w(icoPathW), index, wine_dbgstr_w(destFilename));
 
-    hr = open_icon(icoPathW, index, bWait, &stream, &pIconDirEntries, &numEntries);
+    len = GetFullPathNameW(icoPathW, MAX_PATH, fullPathW, NULL);
+    if (len == 0 || len > MAX_PATH)
+    {
+        WINE_WARN("GetFullPathName failed\n");
+        return NULL;
+    }
+
+    hr = open_icon(fullPathW, index, bWait, &stream, &pIconDirEntries, &numEntries);
     if (FAILED(hr))
     {
-        WINE_WARN("opening icon %s index %d failed, hr=0x%08lX\n", wine_dbgstr_w(icoPathW), index, hr);
+        WINE_WARN("opening icon %s index %d failed, hr=0x%08lX\n", wine_dbgstr_w(fullPathW), index, hr);
         goto end;
     }
-    hr = platform_write_icon(stream, pIconDirEntries, numEntries, index, icoPathW, destFilename, &nativeIdentifier);
+    hr = platform_write_icon(stream, pIconDirEntries, numEntries, index, fullPathW, destFilename, &nativeIdentifier);
     if (FAILED(hr))
         WINE_WARN("writing icon failed, error 0x%08lX\n", hr);
 




More information about the wine-cvs mailing list