/src/cups/ossfuzz/fuzz_helpers.cpp
Line  | Count  | Source  | 
1  |  | // Provide input for C based harnesses  | 
2  |  |  | 
3  |  | #include <fuzzer/FuzzedDataProvider.h>  | 
4  |  |  | 
5  |  | extern "C" { | 
6  |  |  | 
7  |  |     // For fuzz_array  | 
8  |  |  | 
9  |  |     struct FuzzArray { | 
10  |  |         char* str1;  | 
11  |  |         char* str2;  | 
12  |  |     };  | 
13  |  |  | 
14  | 0  |     void generate_fuzz_array_data(const uint8_t *data, size_t size, FuzzArray *outData) { | 
15  |  | 
  | 
16  | 0  |     FuzzedDataProvider fuzz_data(data, size);  | 
17  | 0  |     std::string fuzz_str1 = fuzz_data.ConsumeRandomLengthString(1);  | 
18  | 0  |     std::string fuzz_str2 = fuzz_data.ConsumeRandomLengthString(1);  | 
19  |  |     // int num = fuzz_data.ConsumeIntegral<int>();  | 
20  |  | 
  | 
21  | 0  |     outData->str1 = new char[fuzz_str1.length() + 1];  | 
22  | 0  |     std::strcpy(outData->str1, fuzz_str1.c_str());  | 
23  |  | 
  | 
24  | 0  |     outData->str2 = new char[fuzz_str2.length() + 1];  | 
25  | 0  |     std::strcpy(outData->str2, fuzz_str2.c_str());  | 
26  |  |     // outData->num = num;  | 
27  | 0  |     }  | 
28  |  |  | 
29  | 0  |     void free_fuzz_array_data(FuzzArray *data) { | 
30  | 0  |         delete[] data->str1;  | 
31  | 0  |         delete[] data->str2;  | 
32  | 0  |     }  | 
33  |  |  | 
34  |  | }  |