1*27162e4eSAndroid Build Coastguard Worker #include <stddef.h> 2*27162e4eSAndroid Build Coastguard Worker #include <stdint.h> 3*27162e4eSAndroid Build Coastguard Worker #include <stdio.h> 4*27162e4eSAndroid Build Coastguard Worker #include <stdlib.h> 5*27162e4eSAndroid Build Coastguard Worker 6*27162e4eSAndroid Build Coastguard Worker #include "fuzz_helpers.h" 7*27162e4eSAndroid Build Coastguard Worker #include "lz4frame.h" 8*27162e4eSAndroid Build Coastguard Worker #include "lz4hc.h" 9*27162e4eSAndroid Build Coastguard Worker 10*27162e4eSAndroid Build Coastguard Worker /* Struct used for maintaining the state of the data */ 11*27162e4eSAndroid Build Coastguard Worker typedef struct FUZZ_dataProducer_s FUZZ_dataProducer_t; 12*27162e4eSAndroid Build Coastguard Worker 13*27162e4eSAndroid Build Coastguard Worker /* Returns a data producer state struct. Use for producer initialization. */ 14*27162e4eSAndroid Build Coastguard Worker FUZZ_dataProducer_t *FUZZ_dataProducer_create(const uint8_t *data, size_t size); 15*27162e4eSAndroid Build Coastguard Worker 16*27162e4eSAndroid Build Coastguard Worker /* Frees the data producer */ 17*27162e4eSAndroid Build Coastguard Worker void FUZZ_dataProducer_free(FUZZ_dataProducer_t *producer); 18*27162e4eSAndroid Build Coastguard Worker 19*27162e4eSAndroid Build Coastguard Worker /* Returns 32 bits from the end of data */ 20*27162e4eSAndroid Build Coastguard Worker uint32_t FUZZ_dataProducer_retrieve32(FUZZ_dataProducer_t *producer); 21*27162e4eSAndroid Build Coastguard Worker 22*27162e4eSAndroid Build Coastguard Worker /* Returns value between [min, max] */ 23*27162e4eSAndroid Build Coastguard Worker uint32_t FUZZ_getRange_from_uint32(uint32_t seed, uint32_t min, uint32_t max); 24*27162e4eSAndroid Build Coastguard Worker 25*27162e4eSAndroid Build Coastguard Worker /* Combination of above two functions for non adaptive use cases. ie where size is not involved */ 26*27162e4eSAndroid Build Coastguard Worker uint32_t FUZZ_dataProducer_range32(FUZZ_dataProducer_t *producer, uint32_t min, 27*27162e4eSAndroid Build Coastguard Worker uint32_t max); 28*27162e4eSAndroid Build Coastguard Worker 29*27162e4eSAndroid Build Coastguard Worker /* Returns lz4 preferences */ 30*27162e4eSAndroid Build Coastguard Worker LZ4F_preferences_t FUZZ_dataProducer_preferences(FUZZ_dataProducer_t* producer); 31*27162e4eSAndroid Build Coastguard Worker 32*27162e4eSAndroid Build Coastguard Worker /* Returns lz4 frame info */ 33*27162e4eSAndroid Build Coastguard Worker LZ4F_frameInfo_t FUZZ_dataProducer_frameInfo(FUZZ_dataProducer_t* producer); 34*27162e4eSAndroid Build Coastguard Worker 35*27162e4eSAndroid Build Coastguard Worker /* Returns the size of the remaining bytes of data in the producer */ 36*27162e4eSAndroid Build Coastguard Worker size_t FUZZ_dataProducer_remainingBytes(FUZZ_dataProducer_t *producer); 37