[PATCH] hnetcfg: Store the long path in INetFwAuthorizedApplication_put_ProcessImageFileName().

Zebediah Figura z.figura12 at gmail.com
Thu Jun 28 10:39:36 CDT 2018


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/hnetcfg/apps.c         | 14 ++++++++++++--
 dlls/hnetcfg/tests/policy.c |  1 +
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/dlls/hnetcfg/apps.c b/dlls/hnetcfg/apps.c
index 69eabd6..21e1007 100644
--- a/dlls/hnetcfg/apps.c
+++ b/dlls/hnetcfg/apps.c
@@ -268,9 +268,9 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
 {
     fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
     UNIVERSAL_NAME_INFOW *info;
+    DWORD sz, longsz;
     WCHAR *path;
     DWORD res;
-    DWORD sz;
 
     FIXME("%p, %s\n", This, debugstr_w(image));
 
@@ -298,9 +298,19 @@ static HRESULT WINAPI fw_app_put_ProcessImageFileName(
     sz = GetFullPathNameW(image, 0, NULL, NULL);
     if (!(path = heap_alloc(++sz * sizeof(WCHAR))))
         return E_OUTOFMEMORY;
-
     GetFullPathNameW(image, sz, path, NULL);
 
+    longsz = GetLongPathNameW(path, path, sz);
+    if (longsz > sz)
+    {
+        if (!(path = heap_realloc(path, longsz * sizeof(WCHAR))))
+        {
+            heap_free(path);
+            return E_OUTOFMEMORY;
+        }
+        GetLongPathNameW(path, path, longsz);
+    }
+
     SysFreeString( This->filename );
     This->filename = SysAllocString(path);
     heap_free(path);
diff --git a/dlls/hnetcfg/tests/policy.c b/dlls/hnetcfg/tests/policy.c
index 389be16..4e90ceb 100644
--- a/dlls/hnetcfg/tests/policy.c
+++ b/dlls/hnetcfg/tests/policy.c
@@ -140,6 +140,7 @@ static void test_NetFwAuthorizedApplication(void)
     SysFreeString(bstr);
 
     GetFullPathNameW(image, ARRAY_SIZE(fullpath), fullpath, NULL);
+    GetLongPathNameW(fullpath, fullpath, ARRAY_SIZE(fullpath));
 
     info = (UNIVERSAL_NAME_INFOW *)&netpath;
     sz = sizeof(netpath);
-- 
2.7.4




More information about the wine-devel mailing list