Skip to content

Commit 657191b

Browse files
committed
Simplify ConsumeNode a bit
1 parent fd55524 commit 657191b

File tree

1 file changed

+32
-31
lines changed

1 file changed

+32
-31
lines changed

bitcoin/test/fuzz/miniscript_random.cpp

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
254254
std::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

Comments
 (0)