Zebediah Figura : hnetcfg: Store the full path in INetFwAuthorizedApplication_put_ProcessImageFileName ().

Alexandre Julliard julliard at winehq.org
Tue Jun 26 15:43:10 CDT 2018


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Mon Jun 25 15:41:14 2018 -0500

hnetcfg: Store the full path in INetFwAuthorizedApplication_put_ProcessImageFileName().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/hnetcfg/apps.c         | 17 ++++++++++++-----
 dlls/hnetcfg/tests/policy.c |  5 ++++-
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/dlls/hnetcfg/apps.c b/dlls/hnetcfg/apps.c
index 34ef108..69eabd6 100644
--- a/dlls/hnetcfg/apps.c
+++ b/dlls/hnetcfg/apps.c
@@ -268,7 +268,7 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
 {
     fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
     UNIVERSAL_NAME_INFOW *info;
-    WCHAR *netpath;
+    WCHAR *path;
     DWORD res;
     DWORD sz;
 
@@ -281,22 +281,29 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
     res = WNetGetUniversalNameW(image, UNIVERSAL_NAME_INFO_LEVEL, NULL, &sz);
     if (res == WN_MORE_DATA)
     {
-        if (!(netpath = heap_alloc(sz)))
+        if (!(path = heap_alloc(sz)))
             return E_OUTOFMEMORY;
 
-        info = (UNIVERSAL_NAME_INFOW *)&netpath;
+        info = (UNIVERSAL_NAME_INFOW *)&path;
         res = WNetGetUniversalNameW(image, UNIVERSAL_NAME_INFO_LEVEL, &info, &sz);
         if (res == NO_ERROR)
         {
             SysFreeString(This->filename);
             This->filename = SysAllocString(info->lpUniversalName);
         }
-        heap_free(netpath);
+        heap_free(path);
         return HRESULT_FROM_WIN32(res);
     }
 
+    sz = GetFullPathNameW(image, 0, NULL, NULL);
+    if (!(path = heap_alloc(++sz * sizeof(WCHAR))))
+        return E_OUTOFMEMORY;
+
+    GetFullPathNameW(image, sz, path, NULL);
+
     SysFreeString( This->filename );
-    This->filename = SysAllocString(image);
+    This->filename = SysAllocString(path);
+    heap_free(path);
     return This->filename ? S_OK : E_OUTOFMEMORY;
 }
 
diff --git a/dlls/hnetcfg/tests/policy.c b/dlls/hnetcfg/tests/policy.c
index b28535d..389be16 100644
--- a/dlls/hnetcfg/tests/policy.c
+++ b/dlls/hnetcfg/tests/policy.c
@@ -107,6 +107,7 @@ static void test_NetFwAuthorizedApplication(void)
     INetFwAuthorizedApplication *app;
     static WCHAR empty[] = {0};
     UNIVERSAL_NAME_INFOW *info;
+    WCHAR fullpath[MAX_PATH];
     WCHAR netpath[MAX_PATH];
     WCHAR image[MAX_PATH];
     HRESULT hr;
@@ -138,13 +139,15 @@ static void test_NetFwAuthorizedApplication(void)
     ok(hr == S_OK, "got: %08x\n", hr);
     SysFreeString(bstr);
 
+    GetFullPathNameW(image, ARRAY_SIZE(fullpath), fullpath, NULL);
+
     info = (UNIVERSAL_NAME_INFOW *)&netpath;
     sz = sizeof(netpath);
     hr = WNetGetUniversalNameW(image, UNIVERSAL_NAME_INFO_LEVEL, &info, &sz);
     if (hr != NO_ERROR)
     {
         info->lpUniversalName = netpath + sizeof(*info)/sizeof(WCHAR);
-        lstrcpyW(info->lpUniversalName, image);
+        lstrcpyW(info->lpUniversalName, fullpath);
     }
 
     hr = INetFwAuthorizedApplication_get_ProcessImageFileName(app, &bstr);




More information about the wine-cvs mailing list