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

Issue 823074 link

Starred by 2 users

Issue metadata

Status: Verified
Owner:
Closed: Apr 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows
Pri: 1
Type: Bug-Security



Sign in to add a comment

Security DCHECK failure: line_layout_item.IsLayoutInline() || line_layout_item.IsEqual(this) in LayoutBlo

Project Member Reported by ClusterFuzz, Mar 17 2018

Issue description

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

Fuzzer: ochang_domfuzzer
Job Type: linux_asan_content_shell_drt
Platform Id: linux

Crash Type: Security DCHECK failure
Crash Address: 
Crash State:
  line_layout_item.IsLayoutInline() || line_layout_item.IsEqual(this) in LayoutBlo
  blink::LayoutBlockFlow::CreateLineBoxes
  blink::LayoutBlockFlow::ConstructLine
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_content_shell_drt&range=539922:539941

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

Issue filed automatically.

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

Comment 1 by est...@chromium.org, Mar 17 2018

Components: Blink>Layout
Owner: ikilpatrick@chromium.org
Status: Assigned (was: Untriaged)
ikilpatrick, could you please take a look? May be related to https://chromium-review.googlesource.com/933092. Thanks!
Project Member

Comment 2 by sheriffbot@chromium.org, Mar 18 2018

Labels: M-66
Project Member

Comment 3 by sheriffbot@chromium.org, Mar 18 2018

Labels: ReleaseBlock-Stable
This is a serious security regression. If you are not able to fix this quickly, please revert the change that introduced it.

If this doesn't affect a release branch, or has not been properly classified for severity, please update the Security_Impact or Security_Severity labels, and remove the ReleaseBlock label. To disable this altogether, apply ReleaseBlock-NA.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Project Member

Comment 4 by sheriffbot@chromium.org, Mar 18 2018

Labels: Pri-1
Project Member

Comment 5 by ClusterFuzz, Mar 22 2018

Labels: OS-Windows

Comment 6 by mmoroz@chromium.org, Mar 30 2018

ikilpatrick@, please take a look as per c#1. This is a High severity security issue affecting Beta branch.
Project Member

Comment 7 by sheriffbot@chromium.org, Apr 1 2018

ikilpatrick: Uh oh! This issue still open and hasn't been updated in the last 14 days. This is a serious vulnerability, and we want to ensure that there's progress. Could you please leave an update with the current status and any potential blockers?

If you're not the right owner for this issue, could you please remove yourself as soon as possible or help us find the right one?

If the issue is fixed or you can't reproduce it, please close the bug. If you've started working on a fix, please set the status to Started.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Just a heads up, M66 Stable cut is on April 12th, 10 days away. This issue is marked as RB-Stable for 66. Please make sure to address this issue prior to stable cut. Thanks! 
Reminder: Please note that M66 Stable is only 7 days away. This bug has been marked as ReleaseBlock Stable for M66. So please take a look and appropriately address this bug. 
Cc: mstensho@chromium.org atotic@chromium.org jstenback@chromium.org xiaoche...@chromium.org futhark@chromium.org
Could not reproduce on the tip. 

How do I checkout 66 branch?
On ToT:

We are hitting a DCHECK at layout_block.cc(359) Check failed: !ChildrenInline()

If we ignore the above DCHECK, then we hit the security DCHECK reported in this bug.
minimized test case:

<div style='display: layout(success); columns: 3'>foo</div>

The DCHECK at layout_block.cc(359) fails when we run LayoutBlock::AddChild() on the LayoutCustom of the <div>, which means we should be running LayoutBlockFlow::AddChild() instead of LayoutBlock::AddChild().

When digging deeper, LayoutCustom::AddChild() override was added recently by ikilpatrick@ in crrev.com/c/933092, which allows us to call the LayoutBlock override directly, skipping LayoutBlockFlow:

void LayoutCustom::AddChild(LayoutObject* new_child,
                            LayoutObject* before_child) {
  // Only use the block-flow AddChild logic when we are unloaded, i.e. we
  // should behave exactly like a block-flow.
  if (state_ == kUnloaded) {
    LayoutBlockFlow::AddChild(new_child, before_child);
    return;
  }

  LayoutBlock::AddChild(new_child, before_child);
}

So I guess this is the part of code to be fixed?
Fix already written, and about to land: https://chromium-review.googlesource.com/c/chromium/src/+/990780
Project Member

Comment 15 by bugdroid1@chromium.org, Apr 12 2018

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

commit e5234059fc404a45df9811d537aa20cbad241ad0
Author: Ian Kilpatrick <ikilpatrick@chromium.org>
Date: Thu Apr 12 11:54:26 2018

[css-layout-api] Fix DCHECK with the custom layout and multicol.

There are probably larger changes that need to happen to ensure that
the custom-layout and multicol play nicely together, but this removes
a DCHECK crash for now.

Bug:  823074 
Change-Id: I98f4a34bd0c35e8cd3d23501ca64f38b96be9e7d
Reviewed-on: https://chromium-review.googlesource.com/990780
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550148}
[add] https://crrev.com/e5234059fc404a45df9811d537aa20cbad241ad0/third_party/WebKit/LayoutTests/external/wpt/css/css-layout-api/crash-multicol.https.html
[modify] https://crrev.com/e5234059fc404a45df9811d537aa20cbad241ad0/third_party/blink/renderer/core/layout/custom/layout_custom.cc

Yeah sorry all - half OOO, this should be fixed now. Will check clusterfuzz tomorrow to make sure.
Project Member

Comment 17 by ClusterFuzz, Apr 13 2018

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

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

Comment 18 by sheriffbot@chromium.org, Apr 13 2018

Labels: -Restrict-View-SecurityTeam Restrict-View-SecurityNotify
Project Member

Comment 19 by ClusterFuzz, Apr 13 2018

ClusterFuzz has detected this issue as fixed in range 550146:550148.

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

Fuzzer: ochang_domfuzzer
Job Type: linux_asan_content_shell_drt
Platform Id: linux

Crash Type: Security DCHECK failure
Crash Address: 
Crash State:
  line_layout_item.IsLayoutInline() || line_layout_item.IsEqual(this) in LayoutBlo
  blink::LayoutBlockFlow::CreateLineBoxes
  blink::LayoutBlockFlow::ConstructLine
  
Sanitizer: address (ASAN)

Regressed: https://clusterfuzz.com/revisions?job=linux_asan_content_shell_drt&range=539922:539941
Fixed: https://clusterfuzz.com/revisions?job=linux_asan_content_shell_drt&range=550146:550148

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

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.
 Issue 832990  has been merged into this issue.
Labels: -ReleaseBlock-Stable -M-66 M-67
Project Member

Comment 22 by sheriffbot@chromium.org, Apr 27 2018

Labels: Merge-Request-67
Project Member

Comment 23 by sheriffbot@chromium.org, Apr 27 2018

Labels: -Merge-Request-67 Merge-Review-67 Hotlist-Merge-Review
This bug requires manual review: M67 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), kbleicher@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: awhalley@chromium.org
+awhalley@ for M67 merge review. 
Labels: -Hotlist-Merge-Review -Merge-Review-67
Already in M67, no merge needed.
Project Member

Comment 26 by sheriffbot@chromium.org, Jul 20

Labels: -Restrict-View-SecurityNotify allpublic
This bug has been closed for more than 14 weeks. Removing security view restrictions.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Sign in to add a comment