Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 34cc8da

Browse files
Merge pull request #3335 from cesanta/mip6
enable IPv6 fuzzing
2 parents 1957ba8 + ab5a0c4 commit 34cc8da

File tree

1 file changed

+4
-11
lines changed

1 file changed

+4
-11
lines changed

‎test/fuzz.c‎

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
100100
memcpy(pkt, data, size);
101101
if (size > sizeof(*eth)) {
102102
static size_t i;
103-
// uint16_t eth_types[] = {0x800, 0x806, 0x86dd}; // IPv4, ARP, IPv6
104-
uint16_t eth_types[] = {0x800, 0x806}; // IPv4, ARP, skip IPv6 until we merge it ***
103+
uint16_t eth_types[] = {0x800, 0x806, 0x86dd}; // IPv4, ARP, IPv6
105104
memcpy(eth->dst, mif.mac, 6); // Set valid destination MAC
106105
// send all handled eth types, then 2 random ones
107106
if (i >= (sizeof(eth_types) / sizeof(eth_types[0]) + 2)) i = 0;
@@ -128,7 +127,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
128127
}
129128
}
130129
} else if (eth->type == mg_htons(0x806)) { // ARP
131-
#if0
130+
132131
} else if (eth->type == mg_htons(0x86dd) && size > (sizeof(*eth) + sizeof(struct ip6))) { // IPv6
133132
static size_t j;
134133
uint8_t ip6_protos[] = {6, 17, 58}; // TCP, UDP, ICMPv6
@@ -142,19 +141,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
142141
} else if (ip6->next == 58) { // ICMPv6
143142
if (size >= (sizeof(*eth) + sizeof(struct ip6) + sizeof(struct icmp6))) {
144143
static size_t k;
145-
uint16_t icmp6_types[] = {128, 134, 135, 136}; // Echo Request, RA, NS, NA
144+
uint8_t icmp6_types[] = {128, 134, 135, 136}; // Echo Request, RA, NS, NA
146145
struct icmp6 *icmp6 = (struct icmp6 *) (ip6 + 1);
147146
// send all handled ICMPv6 types, then 2 random ones
148147
if (k >= (sizeof(icmp6_types) / sizeof(icmp6_types[0]) + 2)) k = 0;
149-
if (k < (sizeof(icmp6_types) / sizeof(icmp6_types[0]))) icmp6->type = mg_htons(icmp6_types[k++]);
148+
if (k < (sizeof(icmp6_types) / sizeof(icmp6_types[0]))) icmp6->type = icmp6_types[k++];
150149
}
151150
}
152-
#else
153-
} else if (eth->type == mg_htons(0x86dd)) { // IPv6
154-
free(pkt);
155-
mg_mgr_free(&mgr);
156-
return 0;
157-
#endif
158151
}
159152
}
160153

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /