Jacek Caban : mshtml: Use zone mapping instead of hardcoded protocols in use_gecko_script.
Alexandre Julliard
julliard at winehq.org
Tue Mar 29 11:43:06 CDT 2011
Module: wine
Branch: master
Commit: 3e422b9ed828122524214b9f3ce20f35431242dc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3e422b9ed828122524214b9f3ce20f35431242dc
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Mar 29 12:51:21 2011 +0200
mshtml: Use zone mapping instead of hardcoded protocols in use_gecko_script.
---
dlls/mshtml/persist.c | 21 ++++++++++++++-------
1 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index 43d7e3c..6915e3d 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -48,15 +48,22 @@ typedef struct {
LPOLESTR url;
} download_proc_task_t;
-static BOOL use_gecko_script(LPCWSTR url)
+static BOOL use_gecko_script(HTMLWindow *window)
{
- static const WCHAR fileW[] = {'f','i','l','e',':'};
+ DWORD zone;
+ HRESULT hres;
+
static const WCHAR aboutW[] = {'a','b','o','u','t',':'};
- static const WCHAR resW[] = {'r','e','s',':'};
- return strncmpiW(fileW, url, sizeof(fileW)/sizeof(WCHAR))
- && strncmpiW(aboutW, url, sizeof(aboutW)/sizeof(WCHAR))
- && strncmpiW(resW, url, sizeof(resW)/sizeof(WCHAR));
+ hres = IInternetSecurityManager_MapUrlToZone(window->secmgr, window->url, &zone, 0);
+ if(FAILED(hres)) {
+ WARN("Could not map %s to zone: %08x\n", debugstr_w(window->url), hres);
+ return TRUE;
+ }
+
+ TRACE("zone %d\n", zone);
+ return zone != URLZONE_LOCAL_MACHINE && zone != URLZONE_TRUSTED
+ && strncmpiW(aboutW, window->url, sizeof(aboutW)/sizeof(WCHAR));
}
void set_current_mon(HTMLWindow *This, IMoniker *mon)
@@ -83,7 +90,7 @@ void set_current_mon(HTMLWindow *This, IMoniker *mon)
if(FAILED(hres))
WARN("GetDisplayName failed: %08x\n", hres);
- set_script_mode(This, use_gecko_script(This->url) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT);
+ set_script_mode(This, use_gecko_script(This) ? SCRIPTMODE_GECKO : SCRIPTMODE_ACTIVESCRIPT);
}
static void set_progress_proc(task_t *_task)
More information about the wine-cvs
mailing list