etc.git


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