IsStringUTF8(*string_value_) in values.cc |
||||
Issue descriptionDetailed report: https://clusterfuzz.com/testcase?key=6502483032801280 Fuzzer: libfuzzer_net_spdy_session_fuzzer Job Type: libfuzzer_chrome_asan_debug Platform Id: linux Crash Type: CHECK failure Crash Address: Crash State: IsStringUTF8(*string_value_) in values.cc base::Value::Value base::Value::Value Sanitizer: address (ASAN) Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_asan_debug&range=449627:449661 Reproducer Testcase: https://clusterfuzz.com/download/AMIfv97xsJZ1NZPMJ_BWNYbR0Sm24LY0eBmd4b7n73xaytQy1yyCPNnZ32M1OuCshH50Yr7C7iBPjayPD8r23bOoi9I5DJ3BiDYa8_-t2KHAzxArAkeft_3vrFzMMtqBuzPiF5P0f-hpXo2XMFr-fElh5yn-glbDrPRvQz_Zu8fPcORVPvRzAS1R83J6Ek1JVgmIrTSQEdp62xCp1COsVANXGh3sExEiS-WpfGUOuAPexpekCEIHwN5ZFq-diAttx_sy1DA-RdAtbdpPOj5WyIhjF22QYMmWnDbijM45d-knumq9BRuf4j9W8d4sqO7vWNU60tp362QDpOZNVZgr8S41A9aBeObwzw-dVQZLuzVZp3QOaONPgkA?testcase_id=6502483032801280 Issue filed automatically. See https://chromium.googlesource.com/chromium/src/+/master/testing/libfuzzer/reproducing.md for more information.
,
Mar 9 2017
The CL linked in #1 is the last one to touch base::Value, but it should be unrelated to this issue. Most likely this is caused by the added fuzzer for SpdySession in r449636. I am not familiar with the networking code, but looking at the stack trace it seems like |net::ElideSpdyHeaderBlockForNetLog| tries to append arbitrary binary data in form of a base::Value string to a list (https://codesearch.chromium.org/chromium/src/net/http/http_log_util.cc?l=98). String base::Values are not intended to be used like this and had a DCHECK against non UTF-8 input for years (introduced in http://crrev.com/13230). This DCHECK is triggered here. I see two options how to resolve this: - Make the fuzzer release mode only by wrapping it in |#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON)| ... |#endif|. This is for example done in |chromeos::NetworkStateTest| (https://codesearch.chromium.org/chromium/src/chromeos/network/network_state_unittest.cc?l=77). - Use a binary |base::Value| instead of a string |base::Value| in |net::ElideSpdyHeaderBlockForNetLog|. In order to do so, the obtained |std::string| would need to be converted to a |std::vector<char>| and passed to |base::Value|'s constructor (https://codesearch.chromium.org/chromium/src/base/values.h?l=97). I'm assigning this bug to the author of the fuzzer code and let them decide.
,
Mar 9 2017
Small correction: The link to the DCHECK CL is https://codereview.chromium.org/13230, not http://crrev.com/13230.
,
Mar 9 2017
This looks like a dupe of issue 691243 , but I think that was marked fixed incorrectly, as it only touched the header part and not the value part. Re: suggestions: How would using a binary base::Value affect the display in net-internals and the like? This thing is basically almost-always text, but could, to best of my understanding of specs, contain stuff that's not utf-8 text in some circumstance.
,
Mar 9 2017
You should figure out how you want the strings to appear to the user in net-internals, and then format them in valid UTF-8 to encode this. If base::Value can't decode it, Blink won't either so who knows what the user will see.
,
Mar 14 2017
,
Jul 1 2017
ClusterFuzz has detected this issue as fixed in range 483696:483832. Detailed report: https://clusterfuzz.com/testcase?key=6502483032801280 Fuzzer: libFuzzer_net_spdy_session_fuzzer Job Type: libfuzzer_chrome_asan_debug Platform Id: linux Crash Type: CHECK failure Crash Address: Crash State: IsStringUTF8(*string_value_) in values.cc base::Value::Value base::Value::Value Sanitizer: address (ASAN) Regressed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_asan_debug&range=449627:449661 Fixed: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_asan_debug&range=483696:483832 Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=6502483032801280 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.
,
Jul 1 2017
ClusterFuzz testcase 6502483032801280 is verified as fixed, so closing issue. If this is incorrect, please add ClusterFuzz-Wrong label and re-open the issue. |
||||
►
Sign in to add a comment |
||||
Comment 1 by mummare...@chromium.org
, Mar 9 2017Components: Speed>Tracing
Labels: Test-Predator-Wrong M-59
Owner: vabr@chromium.org
Status: Assigned (was: Untriaged)