29 #define TLV_TYPE_URL 1 30 #define TLV_TYPE_RESPONSE1 2 31 #define TLV_TYPE_USERNAME 3 32 #define TLV_TYPE_PASSWORD 4 33 #define TLV_TYPE_POSTFIELDS 5 34 #define TLV_TYPE_HEADER 6 35 #define TLV_TYPE_COOKIE 7 36 #define TLV_TYPE_UPLOAD1 8 37 #define TLV_TYPE_RANGE 9 38 #define TLV_TYPE_CUSTOMREQUEST 10 39 #define TLV_TYPE_MAIL_RECIPIENT 11 40 #define TLV_TYPE_MAIL_FROM 12 45 #define TLV_RC_NO_ERROR 0 46 #define TLV_RC_NO_MORE_TLVS 1 47 #define TLV_RC_SIZE_ERROR 2 50 #define TEMP_WRITE_ARRAY_SIZE 10 134 uint32_t
to_u32(uint8_t b[4]);
135 uint16_t
to_u16(uint8_t b[2]);
164 int _func_rc = (FUNC); \ 172 #define FCHECK(COND) \ 181 #define FSINGLETONTLV(TLVNAME, FIELDNAME, OPTNAME) \ 183 FCHECK(fuzz->FIELDNAME == NULL); \ 184 fuzz->FIELDNAME = fuzz_tlv_to_string(tlv); \ 185 FTRY(curl_easy_setopt(fuzz->easy, OPTNAME, fuzz->FIELDNAME)); \
const uint8_t * rsp1_data
struct tlv_raw TLV_RAW
Byte stream representation of the TLV header.
int fuzz_initialize_fuzz_data(FUZZ_DATA *fuzz, const uint8_t *data, size_t data_len)
Initialize the local fuzz data structure.
int fuzz_parse_tlv(FUZZ_DATA *fuzz, TLV *tlv)
Do different actions on the CURL handle for different received TLVs.
uint16_t to_u16(uint8_t b[2])
Utility function to convert 2 bytes to a u16 predictably.
UNITTEST_START char * ptr
uint32_t to_u32(uint8_t b[4])
Utility function to convert 4 bytes to a u32 predictably.
char * fuzz_tlv_to_string(TLV *tlv)
Converts a TLV data and length into an allocated string.
void fuzz_free(void **ptr)
If a pointer has been allocated, free that pointer.
static int fuzz_sockopt_callback(void *ptr, curl_socket_t curlfd, curlsocktype purpose)
static size_t fuzz_write_callback(void *contents, size_t size, size_t nmemb, void *ptr)
struct fuzz_data FUZZ_DATA
Data local to a fuzzing run.
int fuzz_get_first_tlv(FUZZ_DATA *fuzz, TLV *tlv)
TLV access function - gets the first TLV from a data stream.
void fuzz_terminate_fuzz_data(FUZZ_DATA *fuzz)
Terminate the fuzz data structure, including freeing any allocated memory.
#define TEMP_WRITE_ARRAY_SIZE
static curl_socket_t fuzz_open_socket(void *ptr, curlsocktype purpose, struct curl_sockaddr *address)
Byte stream representation of the TLV header.
int fuzz_get_tlv_comn(FUZZ_DATA *fuzz, TLV *tlv)
Common TLV function for accessing TLVs in a data stream.
Data local to a fuzzing run.
struct curl_slist * mail_recipients_list
int fuzz_get_next_tlv(FUZZ_DATA *fuzz, TLV *tlv)
TLV access function - gets the next TLV from a data stream.
struct fuzz_parse_state FUZZ_PARSE_STATE
Internal state when parsing a TLV data stream.
const uint8_t * upload1_data
struct curl_slist * header_list
static size_t fuzz_read_callback(char *buffer, size_t size, size_t nitems, void *ptr)
Internal state when parsing a TLV data stream.