summaryrefslogtreecommitdiff
path: root/Source/WebCore/page/DOMWindow.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-23 10:25:11 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-23 10:25:11 +0200
commit5ea819f80c6840c492386bfafbffb059c7e2091f (patch)
tree42ad0b1d82eff090d14278a088ea0f4840a0f938 /Source/WebCore/page/DOMWindow.cpp
parent43a42f108af6bcbd91f2672731c3047c26213af1 (diff)
downloadqtwebkit-5ea819f80c6840c492386bfafbffb059c7e2091f.tar.gz
Imported WebKit commit 20434eb8eb95065803473139d8794e98a7672f75 (http://svn.webkit.org/repository/webkit/trunk@132191)
New snapshot that should fix build with latest qtbase and the QPlastiqueStyle removal
Diffstat (limited to 'Source/WebCore/page/DOMWindow.cpp')
-rw-r--r--Source/WebCore/page/DOMWindow.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/Source/WebCore/page/DOMWindow.cpp b/Source/WebCore/page/DOMWindow.cpp
index faa4ba048..a84fec59c 100644
--- a/Source/WebCore/page/DOMWindow.cpp
+++ b/Source/WebCore/page/DOMWindow.cpp
@@ -745,14 +745,23 @@ Storage* DOMWindow::sessionStorage(ExceptionCode& ec) const
return 0;
}
- if (m_sessionStorage)
+ if (m_sessionStorage) {
+ if (!m_sessionStorage->area()->canAccessStorage(m_frame)) {
+ ec = SECURITY_ERR;
+ return 0;
+ }
return m_sessionStorage.get();
+ }
Page* page = document->page();
if (!page)
return 0;
RefPtr<StorageArea> storageArea = page->sessionStorage()->storageArea(document->securityOrigin());
+ if (!storageArea->canAccessStorage(m_frame)) {
+ ec = SECURITY_ERR;
+ return 0;
+ }
InspectorInstrumentation::didUseDOMStorage(page, storageArea.get(), false, m_frame);
m_sessionStorage = Storage::create(m_frame, storageArea.release());
@@ -773,8 +782,13 @@ Storage* DOMWindow::localStorage(ExceptionCode& ec) const
return 0;
}
- if (m_localStorage)
+ if (m_localStorage) {
+ if (!m_localStorage->area()->canAccessStorage(m_frame)) {
+ ec = SECURITY_ERR;
+ return 0;
+ }
return m_localStorage.get();
+ }
Page* page = document->page();
if (!page)
@@ -784,6 +798,10 @@ Storage* DOMWindow::localStorage(ExceptionCode& ec) const
return 0;
RefPtr<StorageArea> storageArea = page->group().localStorage()->storageArea(document->securityOrigin());
+ if (!storageArea->canAccessStorage(m_frame)) {
+ ec = SECURITY_ERR;
+ return 0;
+ }
InspectorInstrumentation::didUseDOMStorage(page, storageArea.get(), true, m_frame);
m_localStorage = Storage::create(m_frame, storageArea.release());