Changeset View
Changeset View
Standalone View
Standalone View
src/test/fuzz/net.cpp
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | void test_one_input(const std::vector<uint8_t> &buffer) { | ||||
node.SetCommonVersion(fuzzed_data_provider.ConsumeIntegral<int>()); | node.SetCommonVersion(fuzzed_data_provider.ConsumeIntegral<int>()); | ||||
while (fuzzed_data_provider.ConsumeBool()) { | while (fuzzed_data_provider.ConsumeBool()) { | ||||
switch (fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 8)) { | switch (fuzzed_data_provider.ConsumeIntegralInRange<int>(0, 8)) { | ||||
case 0: { | case 0: { | ||||
node.CloseSocketDisconnect(); | node.CloseSocketDisconnect(); | ||||
break; | break; | ||||
} | } | ||||
case 1: { | case 1: { | ||||
node.MaybeSetAddrName( | |||||
fuzzed_data_provider.ConsumeRandomLengthString(32)); | |||||
break; | |||||
} | |||||
case 2: { | |||||
CNodeStats stats; | CNodeStats stats; | ||||
node.copyStats(stats); | node.copyStats(stats); | ||||
break; | break; | ||||
} | } | ||||
case 3: { | case 2: { | ||||
const CNode *add_ref_node = node.AddRef(); | const CNode *add_ref_node = node.AddRef(); | ||||
assert(add_ref_node == &node); | assert(add_ref_node == &node); | ||||
break; | break; | ||||
} | } | ||||
case 4: { | case 3: { | ||||
if (node.GetRefCount() > 0) { | if (node.GetRefCount() > 0) { | ||||
node.Release(); | node.Release(); | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
case 5: { | case 4: { | ||||
const std::optional<CInv> inv_opt = | const std::optional<CInv> inv_opt = | ||||
ConsumeDeserializable<CInv>(fuzzed_data_provider); | ConsumeDeserializable<CInv>(fuzzed_data_provider); | ||||
if (!inv_opt) { | if (!inv_opt) { | ||||
break; | break; | ||||
} | } | ||||
const TxId &txid = TxId(inv_opt->hash); | const TxId &txid = TxId(inv_opt->hash); | ||||
node.AddKnownTx(txid); | node.AddKnownTx(txid); | ||||
break; | break; | ||||
} | } | ||||
case 6: { | case 5: { | ||||
const TxId &txid = TxId(ConsumeUInt256(fuzzed_data_provider)); | const TxId &txid = TxId(ConsumeUInt256(fuzzed_data_provider)); | ||||
node.PushTxInventory(txid); | node.PushTxInventory(txid); | ||||
break; | break; | ||||
} | } | ||||
case 7: { | case 6: { | ||||
const std::optional<CService> service_opt = | const std::optional<CService> service_opt = | ||||
ConsumeDeserializable<CService>(fuzzed_data_provider); | ConsumeDeserializable<CService>(fuzzed_data_provider); | ||||
if (!service_opt) { | if (!service_opt) { | ||||
break; | break; | ||||
} | } | ||||
node.SetAddrLocal(*service_opt); | node.SetAddrLocal(*service_opt); | ||||
break; | break; | ||||
} | } | ||||
case 8: { | case 7: { | ||||
const std::vector<uint8_t> b = | const std::vector<uint8_t> b = | ||||
ConsumeRandomLengthByteVector(fuzzed_data_provider); | ConsumeRandomLengthByteVector(fuzzed_data_provider); | ||||
bool complete; | bool complete; | ||||
node.ReceiveMsgBytes(config, b, complete); | node.ReceiveMsgBytes(config, b, complete); | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
(void)node.GetAddrLocal(); | (void)node.GetAddrLocal(); | ||||
(void)node.GetAddrName(); | |||||
(void)node.GetId(); | (void)node.GetId(); | ||||
(void)node.GetLocalNonce(); | (void)node.GetLocalNonce(); | ||||
(void)node.GetLocalServices(); | (void)node.GetLocalServices(); | ||||
const int ref_count = node.GetRefCount(); | const int ref_count = node.GetRefCount(); | ||||
assert(ref_count >= 0); | assert(ref_count >= 0); | ||||
(void)node.GetCommonVersion(); | (void)node.GetCommonVersion(); | ||||
const NetPermissionFlags net_permission_flags = | const NetPermissionFlags net_permission_flags = | ||||
Show All 14 Lines |