Skip to content

Commit 2cea09f

Browse files
authored
separate fuzzers into different files (#655)
1 parent a652cbc commit 2cea09f

File tree

5 files changed

+121
-48
lines changed

5 files changed

+121
-48
lines changed

fuzz/build.sh

+24
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,27 @@ $CXX $CFLAGS $CXXFLAGS \
1212

1313
$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE parse.o \
1414
-o $OUT/parse
15+
16+
$CXX $CFLAGS $CXXFLAGS \
17+
-std=c++17 \
18+
-I build/singleheader \
19+
-c fuzz/can_parse.cc -o can_parse.o
20+
21+
$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE can_parse.o \
22+
-o $OUT/can_parse
23+
24+
$CXX $CFLAGS $CXXFLAGS \
25+
-std=c++17 \
26+
-I build/singleheader \
27+
-c fuzz/idna.cc -o idna.o
28+
29+
$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE idna.o \
30+
-o $OUT/idna
31+
32+
$CXX $CFLAGS $CXXFLAGS \
33+
-std=c++17 \
34+
-I build/singleheader \
35+
-c fuzz/url_search_params.cc -o url_search_params.o
36+
37+
$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE url_search_params.o \
38+
-o $OUT/url_search_params

fuzz/can_parse.cc

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include <fuzzer/FuzzedDataProvider.h>
2+
3+
#include <memory>
4+
#include <string>
5+
6+
#include "ada.cpp"
7+
#include "ada.h"
8+
9+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
10+
FuzzedDataProvider fdp(data, size);
11+
std::string source = fdp.ConsumeRandomLengthString(256);
12+
std::string base_source = fdp.ConsumeRandomLengthString(256);
13+
14+
/**
15+
* ada::can_parse
16+
*/
17+
auto base_source_view =
18+
std::string_view(base_source.data(), base_source.length());
19+
ada::can_parse(source);
20+
ada::can_parse(source, &base_source_view);
21+
22+
return 0;
23+
}

fuzz/idna.cc

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#include <fuzzer/FuzzedDataProvider.h>
2+
3+
#include <memory>
4+
#include <string>
5+
6+
#include "ada.cpp"
7+
#include "ada.h"
8+
9+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
10+
FuzzedDataProvider fdp(data, size);
11+
std::string source = fdp.ConsumeRandomLengthString(256);
12+
std::string base_source = fdp.ConsumeRandomLengthString(256);
13+
14+
/**
15+
* ada::idna
16+
*/
17+
ada::idna::to_ascii(source);
18+
ada::idna::to_unicode(source);
19+
20+
return 0;
21+
}

fuzz/parse.cc

+1-48
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <fuzzer/FuzzedDataProvider.h>
2+
23
#include <memory>
34
#include <string>
45

@@ -83,58 +84,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
8384
out_aggregator->clear_hash();
8485
}
8586

86-
/**
87-
* ada::can_parse
88-
*/
89-
auto base_source_view =
90-
std::string_view(base_source.data(), base_source.length());
91-
ada::can_parse(source);
92-
ada::can_parse(source, &base_source_view);
93-
94-
/**
95-
* ada::idna
96-
*/
97-
ada::idna::to_ascii(source);
98-
ada::idna::to_unicode(source);
99-
10087
/**
10188
* Node.js specific
10289
*/
10390
ada::href_from_file(source);
10491

105-
/**
106-
* ada::url_search_params
107-
*/
108-
auto initialized = ada::url_search_params(base_source_view);
109-
110-
auto search_params = ada::url_search_params();
111-
search_params.append(source, base_source);
112-
search_params.set(source, base_source);
113-
search_params.to_string();
114-
if (!search_params.has(base_source)) {
115-
search_params.append(base_source, source);
116-
}
117-
search_params.remove(source);
118-
search_params.remove(source, base_source);
119-
if (search_params.has(base_source, source)) {
120-
search_params.remove(base_source);
121-
search_params.remove(base_source, source);
122-
}
123-
124-
auto keys = search_params.get_keys();
125-
while (keys.has_next()) {
126-
keys.next();
127-
}
128-
129-
auto values = search_params.get_values();
130-
while (values.has_next()) {
131-
values.next();
132-
}
133-
134-
auto entries = search_params.get_entries();
135-
while (entries.has_next()) {
136-
entries.next();
137-
}
138-
13992
return 0;
14093
} // extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {

fuzz/url_search_params.cc

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#include <fuzzer/FuzzedDataProvider.h>
2+
3+
#include <memory>
4+
#include <string>
5+
6+
#include "ada.cpp"
7+
#include "ada.h"
8+
9+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
10+
FuzzedDataProvider fdp(data, size);
11+
std::string source = fdp.ConsumeRandomLengthString(256);
12+
std::string base_source = fdp.ConsumeRandomLengthString(256);
13+
14+
/**
15+
* ada::url_search_params
16+
*/
17+
18+
auto base_source_view =
19+
std::string_view(base_source.data(), base_source.length());
20+
auto initialized = ada::url_search_params(base_source_view);
21+
22+
auto search_params = ada::url_search_params();
23+
search_params.append(source, base_source);
24+
search_params.set(source, base_source);
25+
search_params.to_string();
26+
if (!search_params.has(base_source)) {
27+
search_params.append(base_source, source);
28+
}
29+
search_params.remove(source);
30+
search_params.remove(source, base_source);
31+
if (search_params.has(base_source, source)) {
32+
search_params.remove(base_source);
33+
search_params.remove(base_source, source);
34+
}
35+
36+
auto keys = search_params.get_keys();
37+
while (keys.has_next()) {
38+
keys.next();
39+
}
40+
41+
auto values = search_params.get_values();
42+
while (values.has_next()) {
43+
values.next();
44+
}
45+
46+
auto entries = search_params.get_entries();
47+
while (entries.has_next()) {
48+
entries.next();
49+
}
50+
51+
return 0;
52+
}

0 commit comments

Comments
 (0)