Fix CVE-2020-10018
authorChangSeok Oh <changseok@webkit.org>
Mon, 16 Mar 2020 14:25:01 +0000 (14:25 +0000)
committerAlberto Garcia <berto@igalia.com>
Mon, 16 Mar 2020 14:25:01 +0000 (14:25 +0000)
Origin: https://trac.webkit.org/changeset/257292/webkit

===================================================================

Gbp-Pq: Name cve-2020-10018-fix.patch

Source/WebCore/accessibility/AXObjectCache.cpp

index b35fc156437f1ca09d6422bd59c7133fac2c60af..fd1c2470b6a850d6408469b423fab6b3875735f1 100644 (file)
@@ -758,6 +758,12 @@ void AXObjectCache::remove(Node& node)
     m_deferredFocusedNodeChange.removeAllMatching([&node](auto& entry) -> bool {
         return entry.second == &node;
     });
+    // Set nullptr to the old focused node if it is being removed.
+    std::for_each(m_deferredFocusedNodeChange.begin(), m_deferredFocusedNodeChange.end(), [&node](auto& entry) {
+        if (entry.first == &node)
+            entry.first = nullptr;
+    });
+
     removeNodeForUse(node);
 
     remove(m_nodeObjectMapping.take(&node));