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

Issue 860138 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Dec 5
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Integer-overflow in gpu::gles2::GLES2DecoderImpl::DoBlitFramebufferCHROMIUM

Project Member Reported by ClusterFuzz, Jul 4

Issue description

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

Fuzzer: libFuzzer_gpu_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  gpu::gles2::GLES2DecoderImpl::DoBlitFramebufferCHROMIUM
  gpu::gles2::GLES2DecoderImpl::HandleBlitFramebufferCHROMIUM
  gpu::error::Error gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<false>
  
Sanitizer: undefined (UBSAN)

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=512673:512693

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

Issue filed automatically.

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reference.md for more information.
 
Project Member

Comment 1 by ClusterFuzz, Jul 4

Components: Internals>GPU>Internals
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 4

Cc: piman@chromium.org
Labels: ClusterFuzz-Auto-CC
Automatically adding ccs based on OWNERS file / target commit history.

If this is incorrect, please add ClusterFuzz-Wrong label.
Project Member

Comment 3 by ClusterFuzz, Jul 4

Labels: Test-Predator-Auto-Owner
Owner: piman@chromium.org
Status: Assigned (was: Untriaged)
Automatically assigning owner based on suspected regression changelist https://chromium.googlesource.com/chromium/src/+/72bb29070e415e215e2a0095b9266c3ec1c75599 (gpu fuzzers: take configuration bits from input data).

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.
Cc: zmo@chromium.org cwallez@chromium.org
Owner: yunchao...@intel.com
This was actually introduced by https://chromiumcodereview.appspot.com/2409523002 , only uncovered by my CL which made the fuzzer explore the workaround patch.

Maybe using safe math there would be useful?
@piman, How can I reproduce the issue? I have no access to this link https://clusterfuzz.com/testcase?key=4687832707497984. In addition, I suppose that WebGL CTS blitframebuffer-size-overflow.html can cover the integer overflow issue, but that test can pass. 
ANGLE seems to use checked numerics for specific overflow checks. See https://cs.chromium.org/chromium/src/third_party/angle/src/libANGLE/validationES.cpp?type=cs&sq=package:chromium&g=0&l=1353

The parameters in the fuzzer test case are srcX0=0, srcY0=-2147483648, srcX1=100, srcY1=-16777116, dstX0=25855, dstY0=4456448, dstX1=6553638, dstY1=1140850688, mask=637534208, filter=9728

With what looks to be a 0 sized framebuffer (???)
Cc: yunchao@chromium.org
@#5: try accessing the clusterfuzz.com link with your chromium account now? I think if you're cc on the bug you should have access to it.
Project Member

Comment 8 by ClusterFuzz, Dec 1

Labels: -Reproducible Unreproducible
ClusterFuzz testcase 4687832707497984 appears to be flaky, updating reproducibility label.
Labels: -Unreproducible Reproducible
Please ignore the last comment about testcase being unreproducible. The testcase is still reproducible. This happened due to a code refactoring on ClusterFuzz side, and the underlying root cause is now fixed. Resetting the label back to Reproducible. Sorry about the inconvenience caused from these incorrect notifications.
Labels: -Unreproducible Reproducible
Please ignore the last comment about testcase being unreproducible. The testcase is still reproducible. This happened due to a code refactoring on ClusterFuzz side, and the underlying root cause is now fixed. Resetting the label back to Reproducible. Sorry about the inconvenience caused from these incorrect notifications.
Project Member

Comment 11 by ClusterFuzz, Dec 5

ClusterFuzz has detected this issue as fixed in range 613664:613685.

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

Fuzzer: libFuzzer_gpu_fuzzer
Fuzz target binary: gpu_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  gpu::gles2::GLES2DecoderImpl::DoBlitFramebufferCHROMIUM
  gpu::gles2::GLES2DecoderImpl::HandleBlitFramebufferCHROMIUM
  gpu::error::Error gpu::gles2::GLES2DecoderImpl::DoCommandsImpl<false>
  
Sanitizer: undefined (UBSAN)

Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=512673:512693
Fixed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_ubsan&range=613664:613685

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

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reference.md 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 12 by ClusterFuzz, Dec 5

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