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

Issue 663610 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Dec 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Integer-overflow in webrtc::H264BitstreamParser::GetLastSliceQp

Project Member Reported by ClusterFuzz, Nov 9 2016

Issue description

Detailed report: https://cluster-fuzz.appspot.com/testcase?key=5760244061044736

Fuzzer: libfuzzer_h264_bitstream_parser_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  webrtc::H264BitstreamParser::GetLastSliceQp
  webrtc::FuzzOneInput
  _start
  
Regressed: https://cluster-fuzz.appspot.com/revisions?job=libfuzzer_chrome_ubsan&range=430572:430611

Minimized Testcase (0.23 Kb): https://cluster-fuzz.appspot.com/download/AMIfv94acXXKpHv_RY0k77M8bxMqEqMtqydMke_yLWJi9g5lYsbYi0OPVixifPHT1SLqtU1f8cvzJuXhclfSPny9YAxH4iSoOhEREFfkOXvTX8CcAJQUm9xFS6lDUT4TOYobCn1i4dgqMobAyNeZRgpeVkHz6w4Etw?testcase_id=5760244061044736

Issue filed automatically.

See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information.
 
Components: Blink>WebRTC
Labels: M-56
Owner: pbos@chromium.org
Author: pbos
Project: chromium-webrtc
Changelist: https://chromium.googlesource.com/external/webrtc/trunk/webrtc.git/+/8f5983ab0154050b5b36dec57e4a827fac4b228d
Time: Sat Nov 05 10:10:22 2016
The CL last changed line 19 of file h264_bitstream_parser_fuzzer.cc, which is stack frame 1.
Labels: Test-Predator-Wrong
Status: Assigned (was: Untriaged)

Comment 4 by pbos@chromium.org, Nov 10 2016

Cc: pbos@chromium.org
Owner: kthelgason@chromium.org
Kari can you take a look? I believe this is returning the last QP when it's not parsed. I believe GetLastSliceQp should've returned false and not read undefined values here.

Ubsan can be enabled by:

'--args=use_libfuzzer=true is_ubsan_security=true' to gn gen.

Comment 5 by pbos@chromium.org, Nov 10 2016

.. or that these values need to be range checked.
Seems a little unnecessary to add range checks for this case, that should never occur in legitimate cases, and if it does, really has no consequences. However, it seems weird to me that this could even happen, so is probably indicative of another problem. I will investigate this.

Comment 7 by pbos@chromium.org, Nov 14 2016

We shouldn't rely on legitimate/illegitimate cases since this is to be controlled by network traffic (that's why we added a fuzzer for it). It having no consequences or not depends on compiler optimizations, since it's undefined behavior (and we try to keep the webrtc code ubsan clean).

If you can then please fix it instead of adding suppressions, this allows us to further test the code with ubsan. :)
Project Member

Comment 8 by sheriffbot@chromium.org, Nov 22 2016

Labels: -Restrict-View-EditIssue
Removing EditIssue view restrictions from ClusterFuzz filed bugs. If you believe that this issue should still be restricted, please reapply the label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
This should be fixed now. Is it safe to close this bug or is something else needed to reenable the tests on clusterfuzz?

Comment 11 by pbos@chromium.org, Dec 5 2016

Status: Fixed (was: Assigned)
Should get auto-reported as fixed when this is rolled into Chromium and ClusterFuzz picks it up. It's never disabled on ClusterFuzz. :)
Project Member

Comment 12 by ClusterFuzz, Dec 6 2016

ClusterFuzz has detected this issue as fixed in range 436239:436257.

Detailed report: https://cluster-fuzz.appspot.com/testcase?key=5760244061044736

Fuzzer: libfuzzer_h264_bitstream_parser_fuzzer
Job Type: libfuzzer_chrome_ubsan
Platform Id: linux

Crash Type: Integer-overflow
Crash Address: 
Crash State:
  webrtc::H264BitstreamParser::GetLastSliceQp
  webrtc::FuzzOneInput
  _start
  
Regressed: https://cluster-fuzz.appspot.com/revisions?job=libfuzzer_chrome_ubsan&range=430572:430611
Fixed: https://cluster-fuzz.appspot.com/revisions?job=libfuzzer_chrome_ubsan&range=436239:436257

Minimized Testcase (0.23 Kb): https://cluster-fuzz.appspot.com/download/AMIfv94acXXKpHv_RY0k77M8bxMqEqMtqydMke_yLWJi9g5lYsbYi0OPVixifPHT1SLqtU1f8cvzJuXhclfSPny9YAxH4iSoOhEREFfkOXvTX8CcAJQUm9xFS6lDUT4TOYobCn1i4dgqMobAyNeZRgpeVkHz6w4Etw?testcase_id=5760244061044736

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

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

Sign in to add a comment