ReactOS 0.4.17-dev-439-g3d86d5e
zonechk.c File Reference
#include <windef.h>
#include <urlmon.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <shlwapi_undoc.h>
#include <wine/debug.h>
Include dependency graph for zonechk.c:

Go to the source code of this file.

Macros

#define NO_SHLWAPI_REG
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (zonechk)
 
static HRESULT SHLWAPI_GetCachedZonesManagerInner (_In_ REFIID riid, _Out_ PVOID *ppv)
 
static HRESULT SHLWAPI_GetCachedZonesManager (_In_ REFIID riid, _Out_ PVOID *ppv)
 
EXTERN_C VOID SHLWAPI_DeleteCachedZonesManager (VOID)
 
HRESULT SuperPrivate_ZoneCheckPath (PCWSTR pszPath, DWORD dwExpectedZone)
 
HRESULT WINAPI ZoneCheckUrlExCacheA (_In_ PCSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite, _In_opt_ IInternetSecurityManager *pISM)
 
HRESULT WINAPI ZoneCheckUrlExCacheW (_In_ PCWSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite, _In_opt_ IInternetSecurityManager *pISM)
 
HRESULT WINAPI ZoneCheckPathA (_In_ PCSTR pszPath, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckPathW (_In_ PCWSTR pszPath, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckUrlA (_In_ PCSTR pszUrl, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckUrlW (_In_ PCWSTR pszUrl, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckUrlExA (_In_ PCSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckUrlExW (_In_ PCWSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
 
HRESULT WINAPI ZoneCheckHost (_In_ IInternetSecurityManager *pISM, _In_ PCWSTR pszUrl, _In_ DWORD dwAction)
 
HRESULT WINAPI ZoneCheckHostEx (_In_ IInternetSecurityManager *pISM, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ PCWSTR pszUrl, _In_ DWORD dwAction)
 

Variables

static IClassFactoryg_pZoneMgrCF = NULL
 
CRITICAL_SECTION g_csZoneMgrLock
 
static HINSTANCE g_hinstZoneMgr = NULL
 

Macro Definition Documentation

◆ NO_SHLWAPI_REG

#define NO_SHLWAPI_REG

Definition at line 11 of file zonechk.c.

Function Documentation

◆ SHLWAPI_DeleteCachedZonesManager()

EXTERN_C VOID SHLWAPI_DeleteCachedZonesManager ( VOID  )

Definition at line 65 of file zonechk.c.

66{
68 if (g_pZoneMgrCF)
69 {
72 }
74 {
77 }
79}
#define NULL
Definition: types.h:112
#define FreeLibrary(x)
Definition: compat.h:748
ULONG Release()
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static HINSTANCE g_hinstZoneMgr
Definition: zonechk.c:20
static IClassFactory * g_pZoneMgrCF
Definition: zonechk.c:18
CRITICAL_SECTION g_csZoneMgrLock
Definition: zonechk.c:19

Referenced by DllMain().

◆ SHLWAPI_GetCachedZonesManager()

static HRESULT SHLWAPI_GetCachedZonesManager ( _In_ REFIID  riid,
_Out_ PVOID ppv 
)
static

Definition at line 54 of file zonechk.c.

57{
58 HRESULT hr;
62 return hr;
63}
HRESULT hr
Definition: delayimp.cpp:582
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static HRESULT SHLWAPI_GetCachedZonesManagerInner(_In_ REFIID riid, _Out_ PVOID *ppv)
Definition: zonechk.c:23

Referenced by SuperPrivate_ZoneCheckPath(), and ZoneCheckUrlExCacheW().

◆ SHLWAPI_GetCachedZonesManagerInner()

static HRESULT SHLWAPI_GetCachedZonesManagerInner ( _In_ REFIID  riid,
_Out_ PVOID ppv 
)
static

Definition at line 23 of file zonechk.c.

26{
27 HRESULT hr;
28 IClassFactory *pCF;
29
30 if (!g_pZoneMgrCF)
31 {
32 hr = CoGetClassObject(&CLSID_InternetSecurityManager, CLSCTX_INPROC_SERVER, NULL,
33 &IID_IClassFactory, (PVOID *)&pCF);
34 if (FAILED(hr))
35 {
36 *ppv = NULL;
37 return hr;
38 }
39
40 g_pZoneMgrCF = pCF;
41 g_hinstZoneMgr = SHPinDllOfCLSID(&CLSID_InternetSecurityManager);
42 }
43
45}
const GUID IID_IClassFactory
HRESULT WINAPI DECLSPEC_HOTPATCH CoGetClassObject(REFCLSID rclsid, DWORD clscontext, COSERVERINFO *server_info, REFIID riid, void **obj)
Definition: combase.c:1925
HMODULE WINAPI SHPinDllOfCLSID(REFIID refiid)
Definition: ordinal.c:2173
HRESULT CreateInstance([in, unique] IUnknown *pUnkOuter, [in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
#define FAILED(hr)
Definition: intsafe.h:51

Referenced by SHLWAPI_GetCachedZonesManager().

◆ SuperPrivate_ZoneCheckPath()

HRESULT SuperPrivate_ZoneCheckPath ( PCWSTR  pszPath,
DWORD  dwExpectedZone 
)

Definition at line 86 of file zonechk.c.

87{
89 HRESULT hr = SHLWAPI_GetCachedZonesManager(&IID_IInternetSecurityManager, (PVOID *)&pISM);
90 if (FAILED(hr))
91 return E_ACCESSDENIED;
92
93 DWORD dwRealZone = URLZONE_UNTRUSTED;
94 hr = pISM->lpVtbl->MapUrlToZone(pISM, pszPath, &dwRealZone, 0);
95 if (SUCCEEDED(hr) && dwRealZone == dwExpectedZone)
96 hr = S_OK;
97 else
99
100 pISM->lpVtbl->Release(pISM);
101 return hr;
102}
unsigned long DWORD
Definition: ntddk_ex.h:95
HRESULT MapUrlToZone([in] LPCWSTR pwszUrl, [out] DWORD *pdwZone, [in] DWORD dwFlags)
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define E_ACCESSDENIED
Definition: winerror.h:4116
static HRESULT SHLWAPI_GetCachedZonesManager(_In_ REFIID riid, _Out_ PVOID *ppv)
Definition: zonechk.c:54

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( zonechk  )

◆ ZoneCheckHost()

HRESULT WINAPI ZoneCheckHost ( _In_ IInternetSecurityManager pISM,
_In_ PCWSTR  pszUrl,
_In_ DWORD  dwAction 
)

Definition at line 306 of file zonechk.c.

310{
311 return ZoneCheckHostEx(pISM, NULL, 0, NULL, 0, pszUrl, dwAction);
312}
HRESULT WINAPI ZoneCheckHostEx(_In_ IInternetSecurityManager *pISM, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ PCWSTR pszUrl, _In_ DWORD dwAction)
Definition: zonechk.c:318

◆ ZoneCheckHostEx()

HRESULT WINAPI ZoneCheckHostEx ( _In_ IInternetSecurityManager pISM,
_Out_writes_bytes_opt_(cbPolicy) PBYTE  pbPolicy,
_In_ DWORD  cbPolicy,
_In_reads_bytes_opt_(cbContext) PBYTE  pbContext,
_In_ DWORD  cbContext,
_In_ PCWSTR  pszUrl,
_In_ DWORD  dwAction 
)

Definition at line 318 of file zonechk.c.

326{
327 DWORD dwPolicyBuf, dwContextBuf;
328
329 if (!pISM || !pszUrl)
330 return E_INVALIDARG;
331
332 if (!pbPolicy)
333 {
334 dwPolicyBuf = 0;
335 pbPolicy = (PBYTE)&dwPolicyBuf;
336 cbPolicy = sizeof(dwPolicyBuf);
337 }
338
339 if (!pbContext)
340 {
341 dwContextBuf = 0;
342 pbContext = (PBYTE)&dwContextBuf;
343 cbContext = sizeof(dwContextBuf);
344 }
345
346 return pISM->lpVtbl->ProcessUrlAction(pISM, pszUrl, dwAction, pbPolicy, cbPolicy,
347 pbContext, cbContext, 0, 0);
348}
#define E_INVALIDARG
Definition: ddrawi.h:101
BYTE * PBYTE
Definition: pedump.c:66

Referenced by ZoneCheckHost().

◆ ZoneCheckPathA()

HRESULT WINAPI ZoneCheckPathA ( _In_ PCSTR  pszPath,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 197 of file zonechk.c.

202{
203 WCHAR szPath[2048];
204 if (!pszPath)
205 {
206 ERR("pszPath was NULL\n");
207 return E_INVALIDARG;
208 }
210 return ZoneCheckPathW(szPath, dwAction, dwFlags, pSecuritySite);
211}
#define ERR(fmt,...)
Definition: precomp.h:57
DWORD WINAPI SHAnsiToUnicode(const char *src, WCHAR *dest, int dest_len)
Definition: main.c:1801
LPCWSTR szPath
Definition: env.c:37
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
short WCHAR
Definition: pedump.c:58
#define _countof(array)
Definition: sndvol32.h:70
HRESULT WINAPI ZoneCheckPathW(_In_ PCWSTR pszPath, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
Definition: zonechk.c:217

◆ ZoneCheckPathW()

HRESULT WINAPI ZoneCheckPathW ( _In_ PCWSTR  pszPath,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 217 of file zonechk.c.

222{
223 return ZoneCheckUrlW(pszPath, dwAction, dwFlags | PUAF_ISFILE, pSecuritySite);
224}
HRESULT WINAPI ZoneCheckUrlW(_In_ PCWSTR pszUrl, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
Definition: zonechk.c:250

Referenced by ZoneCheckPathA().

◆ ZoneCheckUrlA()

HRESULT WINAPI ZoneCheckUrlA ( _In_ PCSTR  pszUrl,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 230 of file zonechk.c.

235{
236 WCHAR szUrl[2048];
237 if (!pszUrl)
238 {
239 ERR("pszUrl was NULL\n");
240 return E_INVALIDARG;
241 }
242 SHAnsiToUnicode(pszUrl, szUrl, _countof(szUrl));
243 return ZoneCheckUrlW(szUrl, dwAction, dwFlags, pSecuritySite);
244}

◆ ZoneCheckUrlExA()

HRESULT WINAPI ZoneCheckUrlExA ( _In_ PCSTR  pszUrl,
_Out_writes_bytes_opt_(cbPolicy) PBYTE  pbPolicy,
_In_ DWORD  cbPolicy,
_In_reads_bytes_opt_(cbContext) PBYTE  pbContext,
_In_ DWORD  cbContext,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 263 of file zonechk.c.

272{
273 WCHAR szUrl[2048];
274 if (!pszUrl)
275 {
276 ERR("pszUrl was NULL\n");
277 return E_INVALIDARG;
278 }
279 SHAnsiToUnicode(pszUrl, szUrl, _countof(szUrl));
280 return ZoneCheckUrlExW(szUrl, pbPolicy, cbPolicy, pbContext, cbContext,
281 dwAction, dwFlags, pSecuritySite);
282}
HRESULT WINAPI ZoneCheckUrlExW(_In_ PCWSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite)
Definition: zonechk.c:288

◆ ZoneCheckUrlExCacheA()

HRESULT WINAPI ZoneCheckUrlExCacheA ( _In_ PCSTR  pszUrl,
_Out_writes_bytes_opt_(cbPolicy) PBYTE  pbPolicy,
_In_ DWORD  cbPolicy,
_In_reads_bytes_opt_(cbContext) PBYTE  pbContext,
_In_ DWORD  cbContext,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite,
_In_opt_ IInternetSecurityManager pISM 
)

Definition at line 108 of file zonechk.c.

118{
119 WCHAR szUrl[2048];
120 if (!pszUrl)
121 {
122 ERR("pszUrl was NULL\n");
123 return E_INVALIDARG;
124 }
125 SHAnsiToUnicode(pszUrl, szUrl, _countof(szUrl));
126 return ZoneCheckUrlExCacheW(szUrl, pbPolicy, cbPolicy, pbContext, cbContext,
127 dwAction, dwFlags, pSecuritySite, pISM);
128}
HRESULT WINAPI ZoneCheckUrlExCacheW(_In_ PCWSTR pszUrl, _Out_writes_bytes_opt_(cbPolicy) PBYTE pbPolicy, _In_ DWORD cbPolicy, _In_reads_bytes_opt_(cbContext) PBYTE pbContext, _In_ DWORD cbContext, _In_ DWORD dwAction, _In_ DWORD dwFlags, _In_opt_ IInternetSecurityMgrSite *pSecuritySite, _In_opt_ IInternetSecurityManager *pISM)
Definition: zonechk.c:134

◆ ZoneCheckUrlExCacheW()

HRESULT WINAPI ZoneCheckUrlExCacheW ( _In_ PCWSTR  pszUrl,
_Out_writes_bytes_opt_(cbPolicy) PBYTE  pbPolicy,
_In_ DWORD  cbPolicy,
_In_reads_bytes_opt_(cbContext) PBYTE  pbContext,
_In_ DWORD  cbContext,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite,
_In_opt_ IInternetSecurityManager pISM 
)

Definition at line 134 of file zonechk.c.

144{
145 HRESULT hr;
146 IInternetSecurityManager *pWorkISM;
147 DWORD dwPolicyBuf, dwContextBuf;
148
149 if (!pszUrl)
150 {
151 ERR("pszUrl was NULL\n");
152 return E_INVALIDARG;
153 }
154
155 if (pISM && pISM->lpVtbl)
156 hr = pISM->lpVtbl->QueryInterface(pISM, &IID_IInternetSecurityManager, (PVOID *)&pWorkISM);
157 else
158 hr = SHLWAPI_GetCachedZonesManager(&IID_IInternetSecurityManager, (PVOID *)&pWorkISM);
159
160 if (FAILED(hr))
161 {
162 ERR("hr: 0x%lX\n", hr);
163 return hr;
164 }
165
166 if (pSecuritySite)
167 pWorkISM->lpVtbl->SetSecuritySite(pWorkISM, pSecuritySite);
168
169 if (!pbContext)
170 {
171 dwContextBuf = 0;
172 pbContext = (PBYTE)&dwContextBuf;
173 cbContext = sizeof(dwContextBuf);
174 }
175
176 if (!pbPolicy)
177 {
178 dwPolicyBuf = 0;
179 pbPolicy = (PBYTE)&dwPolicyBuf;
180 cbPolicy = sizeof(dwPolicyBuf);
181 }
182
183 hr = pWorkISM->lpVtbl->ProcessUrlAction(pWorkISM, pszUrl, dwAction, pbPolicy, cbPolicy,
184 pbContext, cbContext, dwFlags, 0);
185
186 if (pSecuritySite)
187 pWorkISM->lpVtbl->SetSecuritySite(pWorkISM, NULL);
188
189 pWorkISM->lpVtbl->Release(pWorkISM);
190 return hr;
191}
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
nsrefcnt Release()

Referenced by ZoneCheckUrlExCacheA(), and ZoneCheckUrlExW().

◆ ZoneCheckUrlExW()

HRESULT WINAPI ZoneCheckUrlExW ( _In_ PCWSTR  pszUrl,
_Out_writes_bytes_opt_(cbPolicy) PBYTE  pbPolicy,
_In_ DWORD  cbPolicy,
_In_reads_bytes_opt_(cbContext) PBYTE  pbContext,
_In_ DWORD  cbContext,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 288 of file zonechk.c.

297{
298 return ZoneCheckUrlExCacheW(pszUrl, pbPolicy, cbPolicy, pbContext, cbContext,
299 dwAction, dwFlags, pSecuritySite, NULL);
300}

Referenced by ZoneCheckUrlExA(), and ZoneCheckUrlW().

◆ ZoneCheckUrlW()

HRESULT WINAPI ZoneCheckUrlW ( _In_ PCWSTR  pszUrl,
_In_ DWORD  dwAction,
_In_ DWORD  dwFlags,
_In_opt_ IInternetSecurityMgrSite pSecuritySite 
)

Definition at line 250 of file zonechk.c.

255{
256 return ZoneCheckUrlExW(pszUrl, NULL, 0, NULL, 0, dwAction, dwFlags, pSecuritySite);
257}

Referenced by ZoneCheckPathW(), and ZoneCheckUrlA().

Variable Documentation

◆ g_csZoneMgrLock

CRITICAL_SECTION g_csZoneMgrLock

◆ g_hinstZoneMgr

HINSTANCE g_hinstZoneMgr = NULL
static

◆ g_pZoneMgrCF

IClassFactory* g_pZoneMgrCF = NULL
static