hnetcfg: Store the UNC path in INetFwAuthorizedApplication_put_ProcessImageFileName().
Fixes test failures when running from virtual drive. Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
709cce6329
commit
e6fc86e4a0
|
@ -1,5 +1,5 @@
|
|||
MODULE = hnetcfg.dll
|
||||
IMPORTS = oleaut32 ole32 advapi32
|
||||
IMPORTS = oleaut32 ole32 advapi32 mpr
|
||||
|
||||
C_SRCS = \
|
||||
apps.c \
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include "netfw.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
#include "wine/heap.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "hnetcfg_private.h"
|
||||
|
||||
|
@ -263,18 +264,39 @@ static HRESULT WINAPI fw_app_get_ProcessImageFileName(
|
|||
}
|
||||
|
||||
static HRESULT WINAPI fw_app_put_ProcessImageFileName(
|
||||
INetFwAuthorizedApplication *iface,
|
||||
BSTR imageFileName )
|
||||
INetFwAuthorizedApplication *iface, BSTR image )
|
||||
{
|
||||
fw_app *This = impl_from_INetFwAuthorizedApplication( iface );
|
||||
UNIVERSAL_NAME_INFOW *info;
|
||||
WCHAR *netpath;
|
||||
DWORD res;
|
||||
DWORD sz;
|
||||
|
||||
FIXME("%p, %s\n", This, debugstr_w(imageFileName));
|
||||
FIXME("%p, %s\n", This, debugstr_w(image));
|
||||
|
||||
if (!imageFileName || !imageFileName[0])
|
||||
if (!image || !image[0])
|
||||
return E_INVALIDARG;
|
||||
|
||||
sz = 0;
|
||||
res = WNetGetUniversalNameW(image, UNIVERSAL_NAME_INFO_LEVEL, NULL, &sz);
|
||||
if (res == WN_MORE_DATA)
|
||||
{
|
||||
if (!(netpath = heap_alloc(sz)))
|
||||
return E_OUTOFMEMORY;
|
||||
|
||||
info = (UNIVERSAL_NAME_INFOW *)&netpath;
|
||||
res = WNetGetUniversalNameW(image, UNIVERSAL_NAME_INFO_LEVEL, &info, &sz);
|
||||
if (res == NO_ERROR)
|
||||
{
|
||||
SysFreeString(This->filename);
|
||||
This->filename = SysAllocString(info->lpUniversalName);
|
||||
}
|
||||
heap_free(netpath);
|
||||
return HRESULT_FROM_WIN32(res);
|
||||
}
|
||||
|
||||
SysFreeString( This->filename );
|
||||
This->filename = SysAllocString( imageFileName );
|
||||
This->filename = SysAllocString(image);
|
||||
return This->filename ? S_OK : E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
TESTDLL = hnetcfg.dll
|
||||
IMPORTS = ole32 uuid oleaut32 advapi32
|
||||
IMPORTS = ole32 uuid oleaut32 advapi32 mpr
|
||||
|
||||
C_SRCS = \
|
||||
policy.c
|
||||
|
|
|
@ -106,9 +106,12 @@ static void test_NetFwAuthorizedApplication(void)
|
|||
{
|
||||
INetFwAuthorizedApplication *app;
|
||||
static WCHAR empty[] = {0};
|
||||
UNIVERSAL_NAME_INFOW *info;
|
||||
WCHAR netpath[MAX_PATH];
|
||||
WCHAR image[MAX_PATH];
|
||||
HRESULT hr;
|
||||
BSTR bstr;
|
||||
DWORD sz;
|
||||
|
||||
hr = CoCreateInstance(&CLSID_NetFwAuthorizedApplication, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_INetFwAuthorizedApplication, (void**)&app);
|
||||
|
@ -135,9 +138,19 @@ static void test_NetFwAuthorizedApplication(void)
|
|||
ok(hr == S_OK, "got: %08x\n", hr);
|
||||
SysFreeString(bstr);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
hr = INetFwAuthorizedApplication_get_ProcessImageFileName(app, &bstr);
|
||||
ok(hr == S_OK, "got: %08x\n", hr);
|
||||
ok(!lstrcmpiW(bstr,image), "got: %s\n", wine_dbgstr_w(bstr));
|
||||
ok(!lstrcmpW(bstr,info->lpUniversalName), "expected %s, got %s\n",
|
||||
wine_dbgstr_w(info->lpUniversalName), wine_dbgstr_w(bstr));
|
||||
SysFreeString(bstr);
|
||||
|
||||
INetFwAuthorizedApplication_Release(app);
|
||||
|
|
Loading…
Reference in New Issue