@@ -200,8 +200,8 @@ struct NodeInfo {
200200 NodeInfo (Fragment frag, CPubKey key): fragment(frag), n_subs(0 ), k(0 ), keys({key}) {}
201201 NodeInfo (Fragment frag, uint32_t _k): fragment(frag), n_subs(0 ), k(_k) {}
202202 NodeInfo (Fragment frag, std::vector<unsigned char > h): fragment(frag), n_subs(0 ), k(0 ), hash(std::move(h)) {}
203- NodeInfo (Fragment frag, uint8_t subs ): fragment(frag), n_subs(subs), k(0 ) {}
204- NodeInfo (Fragment frag, uint32_t _k, uint8_t subs ): fragment(frag), n_subs(subs), k(_k) {}
203+ NodeInfo (uint8_t subs, Fragment frag ): fragment(frag), n_subs(subs), k(0 ) {}
204+ NodeInfo (uint8_t subs, Fragment frag, uint32_t _k): fragment(frag), n_subs(subs), k(_k) {}
205205 NodeInfo (Fragment frag, uint32_t _k, std::vector<CPubKey> _keys): fragment(frag), n_subs(0 ), k(_k), keys(std::move(_keys)) {}
206206};
207207
@@ -253,54 +253,55 @@ std::optional<uint32_t> ConsumeTimeLock(FuzzedDataProvider& provider) {
253253 */
254254std::optional<NodeInfo> ConsumeNode (FuzzedDataProvider& provider) {
255255 switch (provider.ConsumeIntegral <uint8_t >()) {
256- case 0 : return NodeInfo ( Fragment::JUST_0) ;
257- case 1 : return NodeInfo ( Fragment::JUST_1) ;
258- case 2 : return NodeInfo ( Fragment::PK_K, ConsumePubKey (provider)) ;
259- case 3 : return NodeInfo ( Fragment::PK_H, ConsumePubKey (provider)) ;
256+ case 0 : return {{ Fragment::JUST_0}} ;
257+ case 1 : return {{ Fragment::JUST_1}} ;
258+ case 2 : return {{ Fragment::PK_K, ConsumePubKey (provider)}} ;
259+ case 3 : return {{ Fragment::PK_H, ConsumePubKey (provider)}} ;
260260 case 4 : {
261261 const auto k = ConsumeTimeLock (provider);
262- return k ? NodeInfo (Fragment::OLDER, *k) : std::optional<NodeInfo>{};
262+ if (!k) return {};
263+ return {{Fragment::OLDER, *k}};
263264 }
264265 case 5 : {
265266 const auto k = ConsumeTimeLock (provider);
266- return k ? NodeInfo (Fragment::AFTER, *k) : std::optional<NodeInfo>{};
267+ if (!k) return {};
268+ return {{Fragment::AFTER, *k}};
267269 }
268- case 6 : return NodeInfo ( Fragment::SHA256, ConsumeSha256 (provider)) ;
269- case 7 : return NodeInfo ( Fragment::HASH256, ConsumeHash256 (provider)) ;
270- case 8 : return NodeInfo ( Fragment::RIPEMD160, ConsumeRipemd160 (provider)) ;
271- case 9 : return NodeInfo ( Fragment::HASH160, ConsumeHash160 (provider)) ;
270+ case 6 : return {{ Fragment::SHA256, ConsumeSha256 (provider)}} ;
271+ case 7 : return {{ Fragment::HASH256, ConsumeHash256 (provider)}} ;
272+ case 8 : return {{ Fragment::RIPEMD160, ConsumeRipemd160 (provider)}} ;
273+ case 9 : return {{ Fragment::HASH160, ConsumeHash160 (provider)}} ;
272274 case 10 : {
273275 const auto k = provider.ConsumeIntegral <uint8_t >();
274276 const auto n_keys = provider.ConsumeIntegral <uint8_t >();
275277 if (n_keys > 20 || k == 0 || k > n_keys) return {};
276278 std::vector<CPubKey> keys{n_keys};
277279 for (auto & key: keys) key = ConsumePubKey (provider);
278- return NodeInfo ( Fragment::MULTI, k, keys) ;
280+ return {{ Fragment::MULTI, k, keys}} ;
279281 }
280- case 11 : return NodeInfo ( Fragment::ANDOR, uint8_t { 3 }) ;
281- case 12 : return NodeInfo ( Fragment::AND_V, uint8_t { 2 }) ;
282- case 13 : return NodeInfo ( Fragment::AND_B, uint8_t { 2 }) ;
283- case 15 : return NodeInfo ( Fragment::OR_B, uint8_t { 2 }) ;
284- case 16 : return NodeInfo ( Fragment::OR_C, uint8_t { 2 }) ;
285- case 17 : return NodeInfo ( Fragment::OR_D, uint8_t { 2 }) ;
286- case 18 : return NodeInfo ( Fragment::OR_I, uint8_t { 2 }) ;
282+ case 11 : return {{ 3 , Fragment::ANDOR}} ;
283+ case 12 : return {{ 2 , Fragment::AND_V}} ;
284+ case 13 : return {{ 2 , Fragment::AND_B}} ;
285+ case 15 : return {{ 2 , Fragment::OR_B}} ;
286+ case 16 : return {{ 2 , Fragment::OR_C}} ;
287+ case 17 : return {{ 2 , Fragment::OR_D}} ;
288+ case 18 : return {{ 2 , Fragment::OR_I}} ;
287289 case 19 : {
288290 auto k = provider.ConsumeIntegral <uint8_t >();
289291 auto n_subs = provider.ConsumeIntegral <uint8_t >();
290292 if (k == 0 || k > n_subs) return {};
291- return NodeInfo ( Fragment::THRESH, k, n_subs) ;
293+ return {{n_subs, Fragment::THRESH, k}} ;
292294 }
293- case 20 : return NodeInfo (Fragment::WRAP_A, uint8_t {1 });
294- case 21 : return NodeInfo (Fragment::WRAP_S, uint8_t {1 });
295- case 22 : return NodeInfo (Fragment::WRAP_C, uint8_t {1 });
296- case 23 : return NodeInfo (Fragment::WRAP_D, uint8_t {1 });
297- case 24 : return NodeInfo (Fragment::WRAP_V, uint8_t {1 });
298- case 25 : return NodeInfo (Fragment::WRAP_J, uint8_t {1 });
299- case 26 : return NodeInfo (Fragment::WRAP_N, uint8_t {1 });
300- default : return {};
295+ case 20 : return {{1 , Fragment::WRAP_A}};
296+ case 21 : return {{1 , Fragment::WRAP_S}};
297+ case 22 : return {{1 , Fragment::WRAP_C}};
298+ case 23 : return {{1 , Fragment::WRAP_D}};
299+ case 24 : return {{1 , Fragment::WRAP_V}};
300+ case 25 : return {{1 , Fragment::WRAP_J}};
301+ case 26 : return {{1 , Fragment::WRAP_N}};
302+ default :
303+ break ;
301304 }
302-
303- assert (false );
304305 return {};
305306}
306307
0 commit comments