MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET

Function FUZZ_TARGET

src/test/fuzz/asmap.cpp:31–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29};
30
31FUZZ_TARGET(asmap)
32{
33 // Encoding: [7 bits: asmap size] [1 bit: ipv6?] [3-130 bytes: asmap] [4 or 16 bytes: addr]
34 if (buffer.size() < 1 + 3 + 4) return;
35 int asmap_size = 3 + (buffer[0] & 127);
36 bool ipv6 = buffer[0] & 128;
37 const size_t addr_size = ipv6 ? ADDR_IPV6_SIZE : ADDR_IPV4_SIZE;
38 if (buffer.size() < size_t(1 + asmap_size + addr_size)) return;
39 std::vector<bool> asmap = ipv6 ? IPV6_PREFIX_ASMAP : IPV4_PREFIX_ASMAP;
40 asmap.reserve(asmap.size() + 8 * asmap_size);
41 for (int i = 0; i < asmap_size; ++i) {
42 for (int j = 0; j < 8; ++j) {
43 asmap.push_back((buffer[1 + i] >> j) & 1);
44 }
45 }
46 if (!SanityCheckASMap(asmap, 128)) return;
47
48 const uint8_t* addr_data = buffer.data() + 1 + asmap_size;
49 CNetAddr net_addr;
50 if (ipv6) {
51 assert(addr_size == ADDR_IPV6_SIZE);
52 net_addr.SetLegacyIPv6({addr_data, addr_size});
53 } else {
54 assert(addr_size == ADDR_IPV4_SIZE);
55 in_addr ipv4;
56 memcpy(&ipv4, addr_data, addr_size);
57 net_addr.SetIP(CNetAddr{ipv4});
58 }
59 (void)net_addr.GetMappedAS(asmap);
60}

Callers

nothing calls this directly

Calls 8

SanityCheckASMapFunction · 0.85
SetLegacyIPv6Method · 0.80
SetIPMethod · 0.80
GetMappedASMethod · 0.80
sizeMethod · 0.45
reserveMethod · 0.45
push_backMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected