@@ -45,83 +45,71 @@ FUZZ_TARGET_INIT(addrman, initialize_addrman)
4545 }
4646 }
4747 while (fuzzed_data_provider.ConsumeBool ()) {
48- switch (fuzzed_data_provider.ConsumeIntegralInRange <int >(0 , 11 )) {
49- case 0 : {
50- addr_man.Clear ();
51- break ;
52- }
53- case 1 : {
54- addr_man.ResolveCollisions ();
55- break ;
56- }
57- case 2 : {
58- (void )addr_man.SelectTriedCollision ();
59- break ;
60- }
61- case 3 : {
62- (void )addr_man.Select (fuzzed_data_provider.ConsumeBool ());
63- break ;
64- }
65- case 4 : {
66- (void )addr_man.GetAddr (fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , 4096 ), fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , 4096 ));
67- break ;
68- }
69- case 5 : {
70- const std::optional<CAddress> opt_address = ConsumeDeserializable<CAddress>(fuzzed_data_provider);
71- const std::optional<CNetAddr> opt_net_addr = ConsumeDeserializable<CNetAddr>(fuzzed_data_provider);
72- if (opt_address && opt_net_addr) {
73- addr_man.Add (*opt_address, *opt_net_addr, fuzzed_data_provider.ConsumeIntegralInRange <int64_t >(0 , 100000000 ));
74- }
75- break ;
76- }
77- case 6 : {
78- std::vector<CAddress> addresses;
79- while (fuzzed_data_provider.ConsumeBool ()) {
48+ CallOneOf (
49+ fuzzed_data_provider,
50+ [&] {
51+ addr_man.Clear ();
52+ },
53+ [&] {
54+ addr_man.ResolveCollisions ();
55+ },
56+ [&] {
57+ (void )addr_man.SelectTriedCollision ();
58+ },
59+ [&] {
60+ (void )addr_man.Select (fuzzed_data_provider.ConsumeBool ());
61+ },
62+ [&] {
63+ (void )addr_man.GetAddr (fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , 4096 ), fuzzed_data_provider.ConsumeIntegralInRange <size_t >(0 , 4096 ));
64+ },
65+ [&] {
8066 const std::optional<CAddress> opt_address = ConsumeDeserializable<CAddress>(fuzzed_data_provider);
81- if (!opt_address) {
82- break ;
67+ const std::optional<CNetAddr> opt_net_addr = ConsumeDeserializable<CNetAddr>(fuzzed_data_provider);
68+ if (opt_address && opt_net_addr) {
69+ addr_man.Add (*opt_address, *opt_net_addr, fuzzed_data_provider.ConsumeIntegralInRange <int64_t >(0 , 100000000 ));
8370 }
84- addresses.push_back (*opt_address);
85- }
86- const std::optional<CNetAddr> opt_net_addr = ConsumeDeserializable<CNetAddr>(fuzzed_data_provider);
87- if (opt_net_addr) {
88- addr_man.Add (addresses, *opt_net_addr, fuzzed_data_provider.ConsumeIntegralInRange <int64_t >(0 , 100000000 ));
89- }
90- break ;
91- }
92- case 7 : {
93- const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
94- if (opt_service) {
95- addr_man.Good (*opt_service, fuzzed_data_provider.ConsumeBool (), ConsumeTime (fuzzed_data_provider));
96- }
97- break ;
98- }
99- case 8 : {
100- const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
101- if (opt_service) {
102- addr_man.Attempt (*opt_service, fuzzed_data_provider.ConsumeBool (), ConsumeTime (fuzzed_data_provider));
103- }
104- break ;
105- }
106- case 9 : {
107- const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
108- if (opt_service) {
109- addr_man.Connected (*opt_service, ConsumeTime (fuzzed_data_provider));
110- }
111- break ;
112- }
113- case 10 : {
114- const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
115- if (opt_service) {
116- addr_man.SetServices (*opt_service, ServiceFlags{fuzzed_data_provider.ConsumeIntegral <uint64_t >()});
117- }
118- break ;
119- }
120- case 11 : {
121- (void )addr_man.Check ();
122- break ;
123- }
124- }
71+ },
72+ [&] {
73+ std::vector<CAddress> addresses;
74+ while (fuzzed_data_provider.ConsumeBool ()) {
75+ const std::optional<CAddress> opt_address = ConsumeDeserializable<CAddress>(fuzzed_data_provider);
76+ if (!opt_address) {
77+ break ;
78+ }
79+ addresses.push_back (*opt_address);
80+ }
81+ const std::optional<CNetAddr> opt_net_addr = ConsumeDeserializable<CNetAddr>(fuzzed_data_provider);
82+ if (opt_net_addr) {
83+ addr_man.Add (addresses, *opt_net_addr, fuzzed_data_provider.ConsumeIntegralInRange <int64_t >(0 , 100000000 ));
84+ }
85+ },
86+ [&] {
87+ const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
88+ if (opt_service) {
89+ addr_man.Good (*opt_service, fuzzed_data_provider.ConsumeBool (), ConsumeTime (fuzzed_data_provider));
90+ }
91+ },
92+ [&] {
93+ const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
94+ if (opt_service) {
95+ addr_man.Attempt (*opt_service, fuzzed_data_provider.ConsumeBool (), ConsumeTime (fuzzed_data_provider));
96+ }
97+ },
98+ [&] {
99+ const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
100+ if (opt_service) {
101+ addr_man.Connected (*opt_service, ConsumeTime (fuzzed_data_provider));
102+ }
103+ },
104+ [&] {
105+ const std::optional<CService> opt_service = ConsumeDeserializable<CService>(fuzzed_data_provider);
106+ if (opt_service) {
107+ addr_man.SetServices (*opt_service, ServiceFlags{fuzzed_data_provider.ConsumeIntegral <uint64_t >()});
108+ }
109+ },
110+ [&] {
111+ (void )addr_man.Check ();
112+ });
125113 }
126114 (void )addr_man.size ();
127115 CDataStream data_stream (SER_NETWORK, PROTOCOL_VERSION);
0 commit comments