Raise InitError when peers.dat is invalid or corrupted

This commit is contained in:
MarcoFalke
2021-08-21 16:17:52 +02:00
parent fa4e2ccfd8
commit fa55c3dc1b
5 changed files with 66 additions and 52 deletions

View File

@@ -1043,7 +1043,7 @@ BOOST_AUTO_TEST_CASE(load_addrman)
CAddrMan addrman2(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 100);
BOOST_CHECK(addrman2.size() == 0);
BOOST_CHECK(ReadFromStream(addrman2, ssPeers2));
ReadFromStream(addrman2, ssPeers2);
BOOST_CHECK(addrman2.size() == 3);
}
@@ -1073,7 +1073,7 @@ BOOST_AUTO_TEST_CASE(load_addrman_corrupted)
CAddrMan addrman2(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 100);
BOOST_CHECK(addrman2.size() == 0);
BOOST_CHECK(!ReadFromStream(addrman2, ssPeers2));
BOOST_CHECK_THROW(ReadFromStream(addrman2, ssPeers2), std::ios_base::failure);
}

View File

@@ -23,5 +23,8 @@ FUZZ_TARGET_INIT(data_stream_addr_man, initialize_data_stream_addr_man)
FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()};
CDataStream data_stream = ConsumeDataStream(fuzzed_data_provider);
CAddrMan addr_man(/* asmap */ std::vector<bool>(), /* deterministic */ false, /* consistency_check_ratio */ 0);
ReadFromStream(addr_man, data_stream);
try {
ReadFromStream(addr_man, data_stream);
} catch (const std::exception&) {
}
}