ReactOS 0.4.17-dev-0-g129ef35
zonechk.c File Reference
#include <windef.h>
#include <urlmon.h>
#include <shlobj.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 64 of file zonechk.c.

65{
67 if (g_pZoneMgrCF)
68 {
71 }
73 {
76 }
78}
#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:19
static IClassFactory * g_pZoneMgrCF
Definition: zonechk.c:17
CRITICAL_SECTION g_csZoneMgrLock
Definition: zonechk.c:18

Referenced by DllMain().

◆ SHLWAPI_GetCachedZonesManager()

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

Definition at line 53 of file zonechk.c.

56{
57 HRESULT hr;
61 return hr;
62}
HRESULT hr
Definition: delayimp.cpp:573
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:22

Referenced by SuperPrivate_ZoneCheckPath(), and ZoneCheckUrlExCacheW().

◆ SHLWAPI_GetCachedZonesManagerInner()

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

Definition at line 22 of file zonechk.c.

25{
26 HRESULT hr;
27 IClassFactory *pCF;
28
29 if (!g_pZoneMgrCF)
30 {
31 hr = CoGetClassObject(&CLSID_InternetSecurityManager, CLSCTX_INPROC_SERVER, NULL,
32 &IID_IClassFactory, (PVOID *)&pCF);
33 if (FAILED(hr))
34 {
35 *ppv = NULL;
36 return hr;
37 }
38
39 g_pZoneMgrCF = pCF;
40 g_hinstZoneMgr = SHPinDllOfCLSID(&CLSID_InternetSecurityManager);
41 }
42
44}
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:2656
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 85 of file zonechk.c.

86{
88 HRESULT hr = SHLWAPI_GetCachedZonesManager(&IID_IInternetSecurityManager, (PVOID *)&pISM);
89 if (FAILED(hr))
90 return E_ACCESSDENIED;
91
92 DWORD dwRealZone = URLZONE_UNTRUSTED;
93 hr = pISM->lpVtbl->MapUrlToZone(pISM, pszPath, &dwRealZone, 0);
94 if (SUCCEEDED(hr) && dwRealZone == dwExpectedZone)
95 hr = S_OK;
96 else
98
99 pISM->lpVtbl->Release(pISM);
100 return hr;
101}
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:53

◆ 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 305 of file zonechk.c.

309{
310 return ZoneCheckHostEx(pISM, NULL, 0, NULL, 0, pszUrl, dwAction);
311}
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:317

◆ 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 317 of file zonechk.c.

325{
326 DWORD dwPolicyBuf, dwContextBuf;
327
328 if (!pISM || !pszUrl)
329 return E_INVALIDARG;
330
331 if (!pbPolicy)
332 {
333 dwPolicyBuf = 0;
334 pbPolicy = (PBYTE)&dwPolicyBuf;
335 cbPolicy = sizeof(dwPolicyBuf);
336 }
337
338 if (!pbContext)
339 {
340 dwContextBuf = 0;
341 pbContext = (PBYTE)&dwContextBuf;
342 cbContext = sizeof(dwContextBuf);
343 }
344
345 return pISM->lpVtbl->ProcessUrlAction(pISM, pszUrl, dwAction, pbPolicy, cbPolicy,
346 pbContext, cbContext, 0, 0);
347}
#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 196 of file zonechk.c.

201{
202 WCHAR szPath[2048];
203 if (!pszPath)
204 {
205 ERR("pszPath was NULL\n");
206 return E_INVALIDARG;
207 }
209 return ZoneCheckPathW(szPath, dwAction, dwFlags, pSecuritySite);
210}
#define ERR(fmt,...)
Definition: precomp.h:57
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
Definition: string.c:2803
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:216

◆ ZoneCheckPathW()

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

Definition at line 216 of file zonechk.c.

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

Referenced by ZoneCheckPathA().

◆ ZoneCheckUrlA()

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

Definition at line 229 of file zonechk.c.

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

◆ 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 262 of file zonechk.c.

271{
272 WCHAR szUrl[2048];
273 if (!pszUrl)
274 {
275 ERR("pszUrl was NULL\n");
276 return E_INVALIDARG;
277 }
278 SHAnsiToUnicode(pszUrl, szUrl, _countof(szUrl));
279 return ZoneCheckUrlExW(szUrl, pbPolicy, cbPolicy, pbContext, cbContext,
280 dwAction, dwFlags, pSecuritySite);
281}
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:287

◆ 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 107 of file zonechk.c.

117{
118 WCHAR szUrl[2048];
119 if (!pszUrl)
120 {
121 ERR("pszUrl was NULL\n");
122 return E_INVALIDARG;
123 }
124 SHAnsiToUnicode(pszUrl, szUrl, _countof(szUrl));
125 return ZoneCheckUrlExCacheW(szUrl, pbPolicy, cbPolicy, pbContext, cbContext,
126 dwAction, dwFlags, pSecuritySite, pISM);
127}
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:133

◆ 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 133 of file zonechk.c.

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

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

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 249 of file zonechk.c.

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

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