/src/ada-url/fuzz/url_search_params.cc
Line | Count | Source |
1 | | #include <fuzzer/FuzzedDataProvider.h> |
2 | | |
3 | | #include <memory> |
4 | | #include <string> |
5 | | |
6 | | #include "ada.cpp" |
7 | | #include "ada.h" |
8 | | |
9 | 1.15k | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
10 | 1.15k | FuzzedDataProvider fdp(data, size); |
11 | 1.15k | std::string source = fdp.ConsumeRandomLengthString(256); |
12 | 1.15k | std::string base_source = fdp.ConsumeRandomLengthString(256); |
13 | | |
14 | | /** |
15 | | * ada::url_search_params |
16 | | */ |
17 | | |
18 | 1.15k | auto base_source_view = |
19 | 1.15k | std::string_view(base_source.data(), base_source.length()); |
20 | 1.15k | auto initialized = ada::url_search_params(base_source_view); |
21 | | |
22 | 1.15k | auto search_params = ada::url_search_params(); |
23 | 1.15k | search_params.append(source, base_source); |
24 | 1.15k | search_params.set(source, base_source); |
25 | 1.15k | search_params.to_string(); |
26 | 1.15k | if (!search_params.has(base_source)) { |
27 | 952 | search_params.append(base_source, source); |
28 | 952 | } |
29 | 1.15k | search_params.remove(source); |
30 | 1.15k | search_params.remove(source, base_source); |
31 | 1.15k | if (search_params.has(base_source, source)) { |
32 | 952 | search_params.remove(base_source); |
33 | 952 | search_params.remove(base_source, source); |
34 | 952 | } |
35 | | |
36 | 1.15k | auto keys = search_params.get_keys(); |
37 | 1.15k | while (keys.has_next()) { |
38 | 0 | keys.next(); |
39 | 0 | } |
40 | | |
41 | 1.15k | auto values = search_params.get_values(); |
42 | 1.15k | while (values.has_next()) { |
43 | 0 | values.next(); |
44 | 0 | } |
45 | | |
46 | 1.15k | auto entries = search_params.get_entries(); |
47 | 1.15k | while (entries.has_next()) { |
48 | 0 | entries.next(); |
49 | 0 | } |
50 | | |
51 | | // This is testing a private method used only for C API. |
52 | 1.15k | std::string resetted_value = fdp.ConsumeRandomLengthString(256); |
53 | 1.15k | search_params.reset(resetted_value); |
54 | | |
55 | 1.15k | return 0; |
56 | 1.15k | } |