/src/simdjson/fuzz/fuzz_padded.cpp
Line | Count | Source |
1 | | #include "FuzzUtils.h" |
2 | | #include "simdjson.h" |
3 | | #include <cstddef> |
4 | | #include <cstdint> |
5 | | #include <fstream> |
6 | | #include <string> |
7 | | |
8 | 977 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { |
9 | 977 | FuzzData fd(Data, Size); |
10 | | |
11 | 977 | const int action = fd.getInt<0, 10>(); |
12 | | |
13 | 977 | const auto s1 = fd.get<size_t>(); |
14 | 977 | const auto s2 = fd.get<size_t>(); |
15 | 977 | switch (action) { |
16 | 124 | case 0: { |
17 | 124 | simdjson_unused simdjson::padded_string p(s1); |
18 | 124 | } break; |
19 | 248 | case 1: { |
20 | | // operator== with temp value |
21 | 248 | simdjson_unused simdjson::padded_string p1(s1); |
22 | 248 | simdjson_unused simdjson::padded_string p2(s2); |
23 | 248 | p1 = std::move(p2); |
24 | 248 | } break; |
25 | 259 | case 2: { |
26 | | // swap |
27 | 259 | simdjson_unused simdjson::padded_string p1(s1); |
28 | 259 | simdjson_unused simdjson::padded_string p2(s2); |
29 | 259 | p1.swap(p2); |
30 | 259 | } break; |
31 | 131 | case 3: { |
32 | 131 | simdjson_unused simdjson::padded_string p(s1); |
33 | 131 | p.data(); |
34 | 131 | } break; |
35 | 120 | case 4: { |
36 | 120 | simdjson::padded_string p(s1); |
37 | 120 | simdjson_unused auto sv = static_cast<std::string_view>(p); |
38 | 120 | } break; |
39 | 92 | case 5: { |
40 | | // load from file. |
41 | 92 | const std::string filename = "/dev/shm/fuzz_padded.tmp"; |
42 | 92 | { |
43 | 92 | std::ofstream file(filename); |
44 | 92 | assert(file); |
45 | 92 | const long ssize = static_cast<long>(fd.Size); |
46 | 92 | file.write(fd.chardata(), ssize); |
47 | 92 | assert(file.tellp() == ssize); |
48 | 92 | } |
49 | 92 | simdjson_unused auto data = simdjson::padded_string::load(filename); |
50 | 92 | } break; |
51 | 3 | default:; |
52 | 977 | } |
53 | 977 | return 0; |
54 | 977 | } |