New issue
Advanced search Search tips

Issue 863784 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Jul 18
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 1
Type: Bug



Sign in to add a comment

Null-dereference READ in blink::SpellCheckRequest::IsValid

Project Member Reported by ClusterFuzz, Jul 16

Issue description

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

Fuzzer: attekett_dom_fuzzer
Job Type: linux_asan_chrome_media
Platform Id: linux

Crash Type: Null-dereference READ
Crash Address: 0x000000000011
Crash State:
  blink::SpellCheckRequest::IsValid
  blink::WebTextCheckingCompletionImpl::DidFinishCheckingText
  SpellCheck::PerformSpellCheck
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_chrome_media&range=573902:573907

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

Additional requirements: Requires Gestures

Issue filed automatically.

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

Comment 1 by ClusterFuzz, Jul 16

Components: Blink>Editing
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, Jul 16

Labels: Test-Predator-Auto-Owner
Owner: xiaoche...@chromium.org
Status: Assigned (was: Untriaged)
Automatically assigning owner based on suspected regression changelist https://chromium.googlesource.com/chromium/src/+/8e8395a6ef581ea65088af7a18dc74e2dad9d5c3 ([Spellchecker] Do not call CalculateCharacterSubrange with overshot length).

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.
Components: -Blink>Editing Blink>Editing>Spellcheck
In cold_mode_spell_check_requester.cc:

  const Position extended_end =
      EndOfSentence(CreateVisiblePosition(chunk_end)).DeepEquivalent();
  const Position check_end =
      extended_end.IsNull() || extended_end < chunk_end
          ? chunk_end
          : std::min(extended_end, remaining_range.EndPosition());
  const EphemeralRange check_range(chunk_start, check_end);

EndOfSentence() may cross treescope boundary. When such a treescope-crossing EphemeralRange is passed into SpellCheckRequest and stored as a range, we may fail to find root editable element.
Project Member

Comment 4 by bugdroid1@chromium.org, Jul 18

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

commit 8ae69efd38b48e5e467b028f7171576b1b01d8a7
Author: Xiaocheng Hu <xiaochengh@chromium.org>
Date: Wed Jul 18 15:29:52 2018

[Spellchecker] Handle shadow-crossing checking range in cold mode checker

Cold mode spellchecker sometimes creates shadow-crossing checking
ranges (due to EndOfSentence() crossing shadow boundary).
SpellCheckRequest converts the checking range into a |Range|, which
may have a different or even null root editable element, and crashes
when it's null.

This patch stops the crash in such case.

Note: So far we haven't found stable and meaningful test cases with
shadow-crossing checking ranges, so we only stop the crash right
now without further fixes.

Bug:  863784 
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: I27e61f8bb2921559799a986b6d99c8c3d2fb114f
Reviewed-on: https://chromium-review.googlesource.com/1141426
Reviewed-by: Yoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576070}
[modify] https://crrev.com/8ae69efd38b48e5e467b028f7171576b1b01d8a7/third_party/blink/renderer/core/editing/spellcheck/idle_spell_check_callback_test.cc
[modify] https://crrev.com/8ae69efd38b48e5e467b028f7171576b1b01d8a7/third_party/blink/renderer/core/editing/spellcheck/spell_check_requester.cc

Status: Fixed (was: Assigned)
Project Member

Comment 6 by ClusterFuzz, Jul 18

ClusterFuzz has detected this issue as fixed in range 576068:576073.

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

Fuzzer: attekett_dom_fuzzer
Job Type: linux_asan_chrome_media
Platform Id: linux

Crash Type: Null-dereference READ
Crash Address: 0x000000000011
Crash State:
  blink::SpellCheckRequest::IsValid
  blink::WebTextCheckingCompletionImpl::DidFinishCheckingText
  SpellCheck::PerformSpellCheck
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_chrome_media&range=573896:573905
Fixed: https://clusterfuzz.com/revisions?job=linux_asan_chrome_media&range=576068:576073

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

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.
Project Member

Comment 7 by ClusterFuzz, Jul 18

Labels: ClusterFuzz-Verified
Status: Verified (was: Fixed)
ClusterFuzz testcase 6280738971058176 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