96 u = (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + b[3];
106 u = (b[0] << 8) + b[1];
130 CURLOPT_OPENSOCKETFUNCTION,
136 CURLOPT_SOCKOPTFUNCTION,
141 CURLOPT_READFUNCTION,
147 CURLOPT_WRITEFUNCTION,
187 if(fuzz->
easy != NULL) {
220 if(socketpair(AF_UNIX, SOCK_STREAM, 0, fds)) {
237 if(shutdown(server_fd, SHUT_WR)) {
292 size_t total = size * nmemb;
294 size_t copy_len = total;
388 CURLOPT_INFILESIZE_LARGE,
#define TLV_TYPE_USERNAME
const uint8_t * rsp1_data
struct tlv_raw TLV_RAW
Byte stream representation of the TLV header.
uint32_t to_u32(uint8_t b[4])
Utility function to convert 4 bytes to a u32 predictably.
int fuzz_get_first_tlv(FUZZ_DATA *fuzz, TLV *tlv)
TLV access function - gets the first TLV from a data stream.
#define TLV_TYPE_CUSTOMREQUEST
UNITTEST_START char * ptr
int fuzz_get_next_tlv(FUZZ_DATA *fuzz, TLV *tlv)
TLV access function - gets the next TLV from a data stream.
char * fuzz_tlv_to_string(TLV *tlv)
Converts a TLV data and length into an allocated string.
#define TLV_RC_NO_MORE_TLVS
int fuzz_initialize_fuzz_data(FUZZ_DATA *fuzz, const uint8_t *data, size_t data_len)
Initialize the local fuzz data structure.
#define TLV_TYPE_PASSWORD
static size_t fuzz_write_callback(void *contents, size_t size, size_t nmemb, void *ptr)
Callback function for handling data output quietly.
int fuzz_parse_tlv(FUZZ_DATA *fuzz, TLV *tlv)
Do different actions on the CURL handle for different received TLVs.
#define curl_easy_setopt(handle, option, value)
void fuzz_free(void **ptr)
If a pointer has been allocated, free that pointer.
int fuzz_get_tlv_comn(FUZZ_DATA *fuzz, TLV *tlv)
Common TLV function for accessing TLVs in a data stream.
static curl_socket_t fuzz_open_socket(void *ptr, curlsocktype purpose, struct curl_sockaddr *address)
Function for providing a socket to CURL already primed with data.
#define TLV_RC_SIZE_ERROR
memcpy(filename, filename1, strlen(filename1))
#define FSINGLETONTLV(TLVNAME, FIELDNAME, OPTNAME)
#define TLV_TYPE_POSTFIELDS
CURL_EXTERN struct curl_slist * curl_slist_append(struct curl_slist *, const char *)
CURL_EXTERN CURL * curl_easy_init(void)
void fuzz_terminate_fuzz_data(FUZZ_DATA *fuzz)
Terminate the fuzz data structure, including freeing any allocated memory.
UNITTEST_START struct Curl_easy data
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
Fuzzing entry point.
CURL_EXTERN void curl_easy_cleanup(CURL *curl)
char write_array[TEMP_WRITE_ARRAY_SIZE]
CURL_TYPEOF_CURL_OFF_T curl_off_t
#define TEMP_WRITE_ARRAY_SIZE
#define CURL_READFUNC_ABORT
static size_t fuzz_read_callback(char *buffer, size_t size, size_t nitems, void *ptr)
Callback function for doing data uploads.
#define TLV_TYPE_MAIL_RECIPIENT
Byte stream representation of the TLV header.
uint16_t to_u16(uint8_t b[2])
Utility function to convert 2 bytes to a u16 predictably.
#define TLV_TYPE_RESPONSE1
Data local to a fuzzing run.
#define TLV_TYPE_URL
TLV types.
static int fuzz_sockopt_callback(void *ptr, curl_socket_t curlfd, curlsocktype purpose)
Callback function for setting socket options on the sockets created by fuzz_open_socket.
#define TLV_TYPE_MAIL_FROM
struct curl_slist * mail_recipients_list
CURL_EXTERN void curl_slist_free_all(struct curl_slist *)
#define CURL_SOCKOPT_ALREADY_CONNECTED
const uint8_t * upload1_data
struct curl_slist * header_list
CURL_EXTERN CURLcode curl_easy_perform(CURL *curl)