fuzz: Remove unused workaround after fix in libmultiprocess byte-span serializer
What changed, and why it matters
This commit removes a temporary safety check in a fuzz test (automated randomized testing code) for Bitcoin Core's inter-process communication. The check avoided sending empty byte arrays because an external library had a bug that triggered undefined-behavior sanitizer warnings. The library bug is now fixed, so the workaround is no longer needed. This is a cleanup of test code, not a fix to production Bitcoin Core code, and it does not change how real users' transactions or wallets are handled.
No immediate action required. Treat as routine test-code cleanup. If tracking the original libmultiprocess UBSan issue, confirm the upstream fix version and that CI fuzz jobs no longer reproduce the empty-vector failure.
Security signals we found
Removal of a fuzz-test workaround for a UBSan issue in an external serializer library
No changes to production code paths, only test/fuzz harness code
Comment references a now-resolved libmultiprocess byte-span serializer bug
Evidence from the diff
In src/ipc/test/fuzz/ipc.cpp, a two-line comment and guard that appended a zero byte to empty vectors before passing them through the IPC fuzz target were deleted. The comment stated the empty data case tripped UBSan in the libmultiprocess byte-span serializer. Removing the workaround implies the underlying libmultiprocess issue has been resolved elsewhere. The change affects only fuzz-test harness code, not consensus, networking, wallet, or RPC logic.
Changed components
src/ipc/test/fuzz/ipc.cppInspect captured patch +0 / −2
diff --git a/src/ipc/test/fuzz/ipc.cpp b/src/ipc/test/fuzz/ipc.cpp
index ee424e2a..1c19faf2 100644
--- a/src/ipc/test/fuzz/ipc.cpp
+++ b/src/ipc/test/fuzz/ipc.cpp
@@ -109,8 +109,6 @@ FUZZ_TARGET(ipc, .init = initialize_ipc)
},
[&] {
std::vector<uint8_t> value = ConsumeRandomLengthByteVector<uint8_t>(fuzzed_data_provider, 512);
- // Empty Data currently trips UBSan in the libmultiprocess byte-span serializer.
- if (value.empty()) value.push_back(0);
std::vector<uint8_t> expected{value.rbegin(), value.rend()};
assert(ipc.m_client->passVectorUint8(value) == expected);
},
Why this scored 18/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.