/src/ndpi/fuzz/fuzz_alg_shoco.cpp
Line | Count | Source |
1 | | #include <stdint.h> |
2 | | #include "shoco.h" |
3 | | #include "ndpi_api.h" |
4 | | #include "fuzzer/FuzzedDataProvider.h" |
5 | | |
6 | 233 | extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { |
7 | 233 | FuzzedDataProvider fuzzed_data(data, size); |
8 | 233 | const char *in; |
9 | 233 | size_t in_len, out_len; |
10 | 233 | char out[8192], orig[8192]; |
11 | 233 | int higher_level_api; |
12 | | |
13 | | /* No memory allocations involved */ |
14 | | |
15 | 233 | higher_level_api = fuzzed_data.ConsumeBool(); |
16 | | |
17 | 233 | std::string s = fuzzed_data.ConsumeRemainingBytesAsString().c_str(); |
18 | 233 | in = s.c_str(); |
19 | 233 | in_len = strlen(in); |
20 | | |
21 | 233 | if(!higher_level_api) { |
22 | 122 | out_len = shoco_compress(in, in_len, out, sizeof(out)); |
23 | 122 | if(out_len <= sizeof(out)) /* No error */ |
24 | 93 | shoco_decompress(out, out_len, orig, sizeof(orig)); |
25 | 122 | } else { |
26 | 111 | out_len = ndpi_compress_str(in, in_len, out, sizeof(out)); |
27 | 111 | if(out_len != 0) /* No error */ |
28 | 93 | ndpi_decompress_str(out, out_len, orig, sizeof(orig)); |
29 | 111 | } |
30 | | |
31 | 233 | return 0; |
32 | 233 | } |