66 | @@ -67,7 +67,7 @@ FUZZ_TARGET(script_sign, .init = initialize_script_sign)
67 | }
68 | std::map<CPubKey, KeyOriginInfo> deserialized_hd_keypaths;
69 | try {
70 | - DeserializeHDKeypaths(serialized, key, hd_keypaths);
71 | + DeserializeHDKeypaths(serialized, key, deserialized_hd_keypaths);
72 | } catch (const std::ios_base::failure&) {
do we still need the try/catch? Doesn't that kinda' defeat the purpose of a fuzzer?
afaict the key can still have a bad size here, which triggers a try/catch, no?
shouldn't we guard for that specifically and abort in other cases? Otherwise what's the point of this call, to have fake coverage?
This is how we handle stream and serialization failures in all the fuzz tests. I think that is fine to be honest. Code calling this function has to handle this exception in the same manner with the highest-level exception type. We could match on the various debug strings for them, but I'm not sure if we really gain much soundness from that.