diff options
author | bimbashrestha <bimbashrestha@devvm1191.atn1.facebook.com> | 2019-08-16 17:50:46 (GMT) |
---|---|---|
committer | bimbashrestha <bimbashrestha@devvm1191.atn1.facebook.com> | 2019-08-16 17:50:46 (GMT) |
commit | fad8c97532f74d92f6aa4427a739610035fcbbd1 (patch) | |
tree | 1d2dea807a17c6f08b6f7b4b65f8cf44fe4df2bf /ossfuzz/fuzz_data_producer.h | |
parent | fdf2ef5809ca875c454510610764d9125ef2ebbd (diff) | |
download | lz4-fad8c97532f74d92f6aa4427a739610035fcbbd1.zip lz4-fad8c97532f74d92f6aa4427a739610035fcbbd1.tar.gz lz4-fad8c97532f74d92f6aa4427a739610035fcbbd1.tar.bz2 |
Adding fuzz data producer for uint32 and using in decompress_fuzzer
Summary: Consuming bytes from the end of data instead of from the front to prevent "all-in-one" decisions.
Test Plan:
Reviewers:
Subscribers:
Tasks:
Tags:
Diffstat (limited to 'ossfuzz/fuzz_data_producer.h')
-rw-r--r-- | ossfuzz/fuzz_data_producer.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/ossfuzz/fuzz_data_producer.h b/ossfuzz/fuzz_data_producer.h new file mode 100644 index 0000000..c41aaec --- /dev/null +++ b/ossfuzz/fuzz_data_producer.h @@ -0,0 +1,27 @@ +#include <stddef.h> +#include <stdint.h> +#include <stdio.h> +#include <stdlib.h> + +FUZZ_STATIC uint32_t FUZZ_produceUint32Range(uint8_t *data, size_t size, + uint32_t min, uint32_t max) { + if (min > max) { + return 0; + } + + uint32_t range = max - min; + uint32_t rolling = range; + uint32_t result = 0; + + while (rolling > 0 && size > 0) { + uint8_t next = *(data + size - 1); + size -= 1; + result = (result << 8) | next; + } + + if (range == 0xffffffff) { + return result; + } + + return min + result % (range + 1); +} |