blob: f887f925c5c342be3ddee6af06ecd6ce65959f74 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#include <cstddef>
#include <cstdint>
#include <pcap.h>
#include "packeteer/summarize.hpp"
// Fuzzes the full decode chain together (Ethernet/RAW -> IPv4/IPv6 ->
// TCP/UDP -> L7), not just each layer in isolation - catches bugs
// that only show up from one layer's output feeding the next (e.g. a
// span that's technically valid per-layer but wrong at the boundary).
// The first byte selects which datalink summarize_packet() should
// assume; the rest is the packet itself.
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (size < 1) return 0;
int datalink = (data[0] % 2 == 0) ? DLT_EN10MB : DLT_RAW;
packeteer::summarize_packet({data + 1, size - 1}, datalink);
return 0;
}
|