Commit f2357fd6 authored by deejay's avatar deejay Committed by Commit Bot

Null dereference in AXMenuList::DidUpdateActiveOption

This fixes a Null-dereference READ error in AXMenuList.

It can get a issue while adding children
in AXObject::UpdateChildrenIfNecessary.
We check HasChildren() before accessing children to fix it.

Bug: 780931
Change-Id: Ia8442643a7ba06114453084d8208d25393dab865
Reviewed-on: https://chromium-review.googlesource.com/753167
Commit-Queue: Dominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515910}
parent d847a88c
...@@ -112,14 +112,17 @@ AccessibilityExpanded AXMenuList::IsExpanded() const { ...@@ -112,14 +112,17 @@ AccessibilityExpanded AXMenuList::IsExpanded() const {
void AXMenuList::DidUpdateActiveOption(int option_index) { void AXMenuList::DidUpdateActiveOption(int option_index) {
bool suppress_notifications = bool suppress_notifications =
(GetNode() && !GetNode()->IsFinishedParsingChildren()); (GetNode() && !GetNode()->IsFinishedParsingChildren());
const auto& child_objects = Children();
if (!child_objects.IsEmpty()) { if (HasChildren()) {
DCHECK(child_objects.size() == 1); const auto& child_objects = Children();
DCHECK(child_objects[0]->IsMenuListPopup()); if (!child_objects.IsEmpty()) {
DCHECK_EQ(child_objects.size(), 1ul);
if (child_objects[0]->IsMenuListPopup()) { DCHECK(child_objects[0]->IsMenuListPopup());
if (AXMenuListPopup* popup = ToAXMenuListPopup(child_objects[0].Get()))
popup->DidUpdateActiveOption(option_index, !suppress_notifications); if (child_objects[0]->IsMenuListPopup()) {
if (AXMenuListPopup* popup = ToAXMenuListPopup(child_objects[0].Get()))
popup->DidUpdateActiveOption(option_index, !suppress_notifications);
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment