| #include "include/sparse/sparse.h" | |
| static volatile int count; | |
| int WriteCallback(void* priv __attribute__((__unused__)), const void* data, size_t len) { | |
| if (!data) { | |
| return 0; | |
| } | |
| if (len == 0) { | |
| return 0; | |
| } | |
| const char* p = (const char*)data; | |
| // Just to make sure the data is accessible | |
| // We only check the head and tail to save time | |
| count += *p; | |
| count += *(p+len-1); | |
| return 0; | |
| } | |
| extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | |
| struct sparse_file* file = sparse_file_import_buf((char*)data, size, true, false); | |
| if (!file) { | |
| return 0; | |
| } | |
| int32_t result = sparse_file_callback(file, false, false, WriteCallback, nullptr); | |
| sparse_file_destroy(file); | |
| return result; | |
| } |