I’m getting a fuzzer failure that I’m guessing may be caused by a change in this function:
0[#740](/bitcoin-bitcoin/740/) NEW cov: 661 ft: 1014 corp: 25/78b lim: 4 exec/s: 0 rss: 110Mb L: 4/4 MS: 5 ChangeBit-CMP-ChangeByte-ChangeBinInt-ShuffleBytes- DE: "\373\000\000\000"-
1/usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_vector.h:1148:9: runtime error: reference binding to null pointer of type 'const value_type' (aka 'const std::basic_string<char>')
2SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/stl_vector.h:1148:9
3AddressSanitizer:DEADLYSIGNAL
4=================================================================
5==21501==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x64b69d0d8101 bp 0x7ffe53d6ec10 sp 0x7ffe53d6eb40 T0)
6==21501==The signal is caused by a READ memory access.
7==21501==Hint: address points to the zero page.
8 [#0](/bitcoin-bitcoin/0/) 0x64b69d0d8101 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::size() const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/basic_string.h:1072:16
9 [#1](/bitcoin-bitcoin/1/) 0x64b69d0d8101 in SplitTorReplyLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) /home/drgrid/bitcoin/src/torcontrol.cpp:230:20
10 [#2](/bitcoin-bitcoin/2/) 0x64b69d0e3b7b in TorController::authchallenge_cb(TorControlConnection&, TorControlReply const&) /home/drgrid/bitcoin/src/torcontrol.cpp:582:48
11 [#3](/bitcoin-bitcoin/3/) 0x64b69b8d6321 in torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_5::operator()() const /home/drgrid/bitcoin/src/test/fuzz/torcontrol.cpp:52:32
12 [#4](/bitcoin-bitcoin/4/) 0x64b69b8d6321 in unsigned long CallOneOf<torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_3, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_4, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_5, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_6, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_7>(FuzzedDataProvider&, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_3, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_4, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_5, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_6, torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_7) /home/drgrid/bitcoin/src/test/fuzz/util.h:42:27
13 [#5](/bitcoin-bitcoin/5/) 0x64b69b8d6321 in torcontrol_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>) /home/drgrid/bitcoin/src/test/fuzz/torcontrol.cpp:43:9
14 [#6](/bitcoin-bitcoin/6/) 0x64b69bb79cd5 in std::function<void (std::span<unsigned char const, 18446744073709551615ul>)>::operator()(std::span<unsigned char const, 18446744073709551615ul>) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:9
15 [#7](/bitcoin-bitcoin/7/) 0x64b69bb79cd5 in test_one_input(std::span<unsigned char const, 18446744073709551615ul>) /home/drgrid/bitcoin/src/test/fuzz/fuzz.cpp:88:5
16 [#8](/bitcoin-bitcoin/8/) 0x64b69bb79cd5 in LLVMFuzzerTestOneInput /home/drgrid/bitcoin/src/test/fuzz/fuzz.cpp:216:5
17 [#9](/bitcoin-bitcoin/9/) 0x64b69b115c14 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1badc14) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
18 [#10](/bitcoin-bitcoin/10/) 0x64b69b115309 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool, bool*) (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1bad309) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
19 [#11](/bitcoin-bitcoin/11/) 0x64b69b116af5 in fuzzer::Fuzzer::MutateAndTestOne() (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1baeaf5) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
20 [#12](/bitcoin-bitcoin/12/) 0x64b69b117655 in fuzzer::Fuzzer::Loop(std::vector<fuzzer::SizedFile, std::allocator<fuzzer::SizedFile>>&) (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1baf655) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
21 [#13](/bitcoin-bitcoin/13/) 0x64b69b10492f in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1b9c92f) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
22 [#14](/bitcoin-bitcoin/14/) 0x64b69b12efb6 in main (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1bc6fb6) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
23 [#15](/bitcoin-bitcoin/15/) 0x70df0082a1c9 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
24 [#16](/bitcoin-bitcoin/16/) 0x70df0082a28a in __libc_start_main csu/../csu/libc-start.c:360:3
25 [#17](/bitcoin-bitcoin/17/) 0x64b69b0f9914 in _start (/home/drgrid/bitcoin/build_fuzz/bin/fuzz+0x1b91914) (BuildId: e39b175d556cbbeafdd76014c930896f3d6c8f6e)
26
27AddressSanitizer can not provide additional info.
28SUMMARY: AddressSanitizer: SEGV /home/drgrid/bitcoin/src/torcontrol.cpp:230:20 in SplitTorReplyLine(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
29==21501==ABORTING
30MS: 1 ChangeASCIIInt-; base unit: 66ab8fe3159190c0fece3131125619ef7349a19d
310x84,0x33,0xdb,0x67,
32\2043\333g
33artifact_prefix='./'; Test unit written to ./crash-01d7dad05a5562f6797a2b566c99fb79187bc471
34Base64: hDPbZw==
I am able to reproduce the crash locally with:
0cat crash-01d7dad05a5562f6797a2b566c99fb79187bc471 | base64
1hDPbZw==