etc~ scripts and random things |
| git clone https://github.com/djnnvx/etc.git |
| log | files | refs | archive |
fuzz_descriptor.c (944B)
1 /* 2 * Harness: config/interface/endpoint descriptor chain via raw_desc_to_config(). 3 * Targets: parse_configuration -> parse_interface -> parse_endpoint (all static). 4 */ 5 6 #include "fuzz-include/libusb_fuzz.h" 7 #include "libusb-src/libusb/descriptor.c" 8 9 static int fuzz_one(const uint8_t *data, size_t size) 10 { 11 if (size < 1) 12 return 0; 13 14 struct libusb_config_descriptor *config = NULL; 15 int r = raw_desc_to_config(NULL, data, 16 (int)(size > (size_t)INT_MAX ? INT_MAX : size), &config); 17 if (r == LIBUSB_SUCCESS && config) 18 libusb_free_config_descriptor(config); 19 return 0; 20 } 21 22 #ifdef __AFL_FUZZ_TESTCASE_LEN 23 __AFL_FUZZ_INIT(); 24 int main(void) 25 { 26 __AFL_INIT(); 27 uint8_t *buf = __AFL_FUZZ_TESTCASE_BUF; 28 while (__AFL_LOOP(10000)) 29 fuzz_one(buf, __AFL_FUZZ_TESTCASE_LEN); 30 return 0; 31 } 32 #else 33 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) 34 { 35 return fuzz_one(data, size); 36 } 37 #endif