Title: [225982] trunk/Source/WebKit
- Revision
- 225982
- Author
- beid...@apple.com
- Date
- 2017-12-15 13:15:17 -0800 (Fri, 15 Dec 2017)
Log Message
Make sure only WebsiteDataStores with valid SessionIDs register themselves.
https://bugs.webkit.org/show_bug.cgi?id=180869
Reviewed by Chris Dumez.
Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
but we didn't account for that in the map added in r225935.
Seems prudent to make sure we're not doing hash table operations with invalid keys.
* UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
(WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):
* UIProcess/WebsiteData/WebsiteDataStore.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (225981 => 225982)
--- trunk/Source/WebKit/ChangeLog 2017-12-15 21:12:43 UTC (rev 225981)
+++ trunk/Source/WebKit/ChangeLog 2017-12-15 21:15:17 UTC (rev 225982)
@@ -1,3 +1,22 @@
+2017-12-15 Brady Eidson <beid...@apple.com>
+
+ Make sure only WebsiteDataStores with valid SessionIDs register themselves.
+ https://bugs.webkit.org/show_bug.cgi?id=180869
+
+ Reviewed by Chris Dumez.
+
+ Some code in WebsiteDataStore assumes an invalid SessionID is a possibility,
+ but we didn't account for that in the map added in r225935.
+
+ Seems prudent to make sure we're not doing hash table operations with invalid keys.
+
+ * UIProcess/WebsiteData/WebsiteDataStore.cpp:
+ (WebKit::WebsiteDataStore::WebsiteDataStore):
+ (WebKit::WebsiteDataStore::~WebsiteDataStore):
+ (WebKit::WebsiteDataStore::maybeRegisterWithSessionIDMap):
+ (WebKit::WebsiteDataStore::existingNonDefaultDataStoreForSessionID):
+ * UIProcess/WebsiteData/WebsiteDataStore.h:
+
2017-12-14 Simon Fraser <simon.fra...@apple.com>
Rotating when zoomed in with fingers down can result in a broken tab
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp (225981 => 225982)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-12-15 21:12:43 UTC (rev 225981)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp 2017-12-15 21:15:17 UTC (rev 225982)
@@ -78,11 +78,7 @@
, m_storageManager(StorageManager::create(m_configuration.localStorageDirectory))
, m_queue(WorkQueue::create("com.apple.WebKit.WebsiteDataStore"))
{
- if (m_sessionID != PAL::SessionID::defaultSessionID()) {
- auto result = nonDefaultDataStores().add(sessionID, this);
- ASSERT_UNUSED(result, result.isNewEntry);
- }
-
+ maybeRegisterWithSessionIDMap();
platformInitialize();
}
@@ -91,32 +87,33 @@
, m_configuration()
, m_queue(WorkQueue::create("com.apple.WebKit.WebsiteDataStore"))
{
- if (m_sessionID != PAL::SessionID::defaultSessionID()) {
- auto result = nonDefaultDataStores().add(sessionID, this);
- ASSERT_UNUSED(result, result.isNewEntry);
- }
-
+ maybeRegisterWithSessionIDMap();
platformInitialize();
}
WebsiteDataStore::~WebsiteDataStore()
{
- if (m_sessionID != PAL::SessionID::defaultSessionID()) {
- ASSERT(nonDefaultDataStores().get(m_sessionID) == this);
- nonDefaultDataStores().remove(m_sessionID);
- }
-
platformDestroy();
if (m_sessionID.isValid() && m_sessionID != PAL::SessionID::defaultSessionID()) {
+ ASSERT(nonDefaultDataStores().get(m_sessionID) == this);
+ nonDefaultDataStores().remove(m_sessionID);
for (auto& processPool : WebProcessPool::allProcessPools())
processPool->sendToNetworkingProcess(Messages::NetworkProcess::DestroySession(m_sessionID));
}
}
+void WebsiteDataStore::maybeRegisterWithSessionIDMap()
+{
+ if (m_sessionID.isValid() && m_sessionID != PAL::SessionID::defaultSessionID()) {
+ auto result = nonDefaultDataStores().add(m_sessionID, this);
+ ASSERT_UNUSED(result, result.isNewEntry);
+ }
+}
+
WebsiteDataStore* WebsiteDataStore::existingNonDefaultDataStoreForSessionID(PAL::SessionID sessionID)
{
- return nonDefaultDataStores().get(sessionID);
+ return sessionID.isValid() && sessionID != PAL::SessionID::defaultSessionID() ? nonDefaultDataStores().get(sessionID) : nullptr;
}
WebProcessPool* WebsiteDataStore::processPoolForCookieStorageOperations()
Modified: trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h (225981 => 225982)
--- trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2017-12-15 21:12:43 UTC (rev 225981)
+++ trunk/Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h 2017-12-15 21:15:17 UTC (rev 225982)
@@ -183,6 +183,8 @@
static void removeMediaKeys(const String& mediaKeysStorageDirectory, std::chrono::system_clock::time_point modifiedSince);
static void removeMediaKeys(const String& mediaKeysStorageDirectory, const HashSet<WebCore::SecurityOriginData>&);
+ void maybeRegisterWithSessionIDMap();
+
const PAL::SessionID m_sessionID;
const Configuration m_configuration;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes