New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 849915 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Last visit > 30 days ago
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug



Sign in to add a comment

Null-dereference READ in blink::Document::CanExecuteScripts

Project Member Reported by ClusterFuzz, Jun 6 2018

Issue description

Detailed report: https://clusterfuzz.com/testcase?key=4546927027552256

Fuzzer: ifratric-browserfuzzer-v3
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Null-dereference READ
Crash Address: 0x000000000568
Crash State:
  blink::Document::CanExecuteScripts
  blink::MutationObserver::ShouldBeSuspended
  blink::MutationObserver::DeliverMutations
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=564295:564315

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=4546927027552256

Issue filed automatically.

See https://github.com/google/clusterfuzz-tools for more information.
 
Project Member

Comment 1 by ClusterFuzz, Jun 6 2018

Components: Blink>DOM
Labels: Test-Predator-Auto-Components
Automatically applying components based on crash stacktrace and information from OWNERS files.

If this is incorrect, please apply the Test-Predator-Wrong-Components label.
Project Member

Comment 2 by ClusterFuzz, Jun 6 2018

Labels: Test-Predator-Auto-Owner
Owner: jnd@chromium.org
Status: Assigned (was: Untriaged)
Automatically assigning owner based on suspected regression changelist https://chromium.googlesource.com/chromium/src/+/e7c12ca34b1b205f77fbaa2e6c6638ccb364f123 (Check script setting before invoking the mutation observer handler.).

If this is incorrect, please let us know why and apply the Test-Predator-Wrong-CLs label. If you aren't the correct owner for this issue, please unassign yourself as soon as possible so it can be re-triaged.
Project Member

Comment 3 by ClusterFuzz, Jun 6 2018

Labels: OS-Linux
Project Member

Comment 4 by ClusterFuzz, Jun 10 2018

Labels: OS-Windows
Project Member

Comment 5 by bugdroid1@chromium.org, Jun 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9a56b451f20b2ec15b8362b35537813611c80232

commit 9a56b451f20b2ec15b8362b35537813611c80232
Author: Johnny(Jianning) Ding <jnd@chromium.org>
Date: Wed Jun 20 12:38:26 2018

Add script setting check in IsCallbackFunctionRunnable.

The incumbent realm schedules the currently-running callback although
it may not correspond to the currently-running function object.
The goal for this CL to is check whether the script setting is disabled
before invoking JS callback, then checking the context which originally
schedules the current-running callback seems to make more sense.

Please notice that this CL changes the behavior of the method
IsCallbackFunctionRunnable to require the execution context of the
incumbent environment to be not empty, not paused and enabled for
JavaScript.

Bug:  849600 , 849601 , 849730 , 848086 , 849915 , 851357 
Change-Id: Id8ab0f9f67f9602635b295b414d2d0026c87e4ab
Reviewed-on: https://chromium-review.googlesource.com/1087536
Commit-Queue: Johnny Ding <jnd@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568799}
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/WebKit/LayoutTests/inspector-protocol/page/not-invoke-mutation-observer-after-script-disabled-expected.txt
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/WebKit/LayoutTests/inspector-protocol/page/not-invoke-mutation-observer-after-script-disabled.js
[add] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/WebKit/LayoutTests/inspector-protocol/resources/mutation-observer-triggered-by-parser.html
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/core/v8/generated_code_helper.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/core/v8/generated_code_helper.h
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/templates/callback_function.cpp.tmpl
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/templates/callback_interface.cpp.tmpl
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_any_callback_function_optional_any_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_long_callback_function.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_string_sequence_callback_function_long_sequence_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_test_callback_interface.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_test_legacy_callback_interface.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_dictionary_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_enum_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_interface_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_test_interface_sequence_arg.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/core/v8_void_callback_function_typedef.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/bindings/tests/results/modules/v8_void_callback_function_modules.cc
[modify] https://crrev.com/9a56b451f20b2ec15b8362b35537813611c80232/third_party/blink/renderer/core/dom/mutation_observer.cc

Project Member

Comment 6 by ClusterFuzz, Jun 21 2018

ClusterFuzz has detected this issue as fixed in range 568798:568802.

Detailed report: https://clusterfuzz.com/testcase?key=4546927027552256

Fuzzer: ifratric-browserfuzzer-v3
Job Type: mac_asan_chrome
Platform Id: mac

Crash Type: Null-dereference READ
Crash Address: 0x000000000568
Crash State:
  blink::Document::CanExecuteScripts
  blink::MutationObserver::ShouldBeSuspended
  blink::MutationObserver::DeliverMutations
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=564295:564315
Fixed: https://clusterfuzz.com/revisions?job=mac_asan_chrome&range=568798:568802

Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=4546927027552256

See https://github.com/google/clusterfuzz-tools for more information.

If you suspect that the result above is incorrect, try re-doing that job on the test case report page.

Comment 7 by jnd@chromium.org, Jun 21 2018

Status: Fixed (was: Assigned)
Project Member

Comment 8 by ClusterFuzz, Jun 21 2018

Labels: ClusterFuzz-Verified
Status: Verified (was: Fixed)
ClusterFuzz testcase 4546927027552256 is verified as fixed, so closing issue as verified.

If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue.

Sign in to add a comment