|
26 | 26 | /** |
27 | 27 | * TLV types. |
28 | 28 | */ |
29 | | -#define TLV_TYPE_URL 1 |
30 | | -#define TLV_TYPE_RESPONSE0 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 |
41 | | -#define TLV_TYPE_MIME_PART 13 |
42 | | -#define TLV_TYPE_MIME_PART_NAME 14 |
43 | | -#define TLV_TYPE_MIME_PART_DATA 15 |
44 | | -#define TLV_TYPE_HTTPAUTH 16 |
45 | | -#define TLV_TYPE_RESPONSE1 17 |
46 | | -#define TLV_TYPE_RESPONSE2 18 |
47 | | -#define TLV_TYPE_RESPONSE3 19 |
48 | | -#define TLV_TYPE_RESPONSE4 20 |
49 | | -#define TLV_TYPE_RESPONSE5 21 |
50 | | -#define TLV_TYPE_RESPONSE6 22 |
51 | | -#define TLV_TYPE_RESPONSE7 23 |
52 | | -#define TLV_TYPE_RESPONSE8 24 |
53 | | -#define TLV_TYPE_RESPONSE9 25 |
54 | | -#define TLV_TYPE_RESPONSE10 26 |
55 | | -#define TLV_TYPE_OPTHEADER 27 |
56 | | -#define TLV_TYPE_NOBODY 28 |
57 | | -#define TLV_TYPE_FOLLOWLOCATION 29 |
58 | | -#define TLV_TYPE_ACCEPTENCODING 30 |
59 | | -#define TLV_TYPE_SECOND_RESPONSE0 31 |
60 | | -#define TLV_TYPE_SECOND_RESPONSE1 32 |
61 | | -#define TLV_TYPE_WILDCARDMATCH 33 |
62 | | -#define TLV_TYPE_RTSP_REQUEST 34 |
63 | | -#define TLV_TYPE_RTSP_SESSION_ID 35 |
64 | | -#define TLV_TYPE_RTSP_STREAM_URI 36 |
65 | | -#define TLV_TYPE_RTSP_TRANSPORT 37 |
66 | | -#define TLV_TYPE_RTSP_CLIENT_CSEQ 38 |
67 | | -#define TLV_TYPE_MAIL_AUTH 39 |
68 | | -#define TLV_TYPE_HTTP_VERSION 40 |
69 | | -#define TLV_TYPE_DOH_URL 41 |
| 29 | +#define TLV_TYPE_URL 1 |
| 30 | +#define TLV_TYPE_RESPONSE0 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 |
| 41 | +#define TLV_TYPE_MIME_PART 13 |
| 42 | +#define TLV_TYPE_MIME_PART_NAME 14 |
| 43 | +#define TLV_TYPE_MIME_PART_DATA 15 |
| 44 | +#define TLV_TYPE_HTTPAUTH 16 |
| 45 | +#define TLV_TYPE_RESPONSE1 17 |
| 46 | +#define TLV_TYPE_RESPONSE2 18 |
| 47 | +#define TLV_TYPE_RESPONSE3 19 |
| 48 | +#define TLV_TYPE_RESPONSE4 20 |
| 49 | +#define TLV_TYPE_RESPONSE5 21 |
| 50 | +#define TLV_TYPE_RESPONSE6 22 |
| 51 | +#define TLV_TYPE_RESPONSE7 23 |
| 52 | +#define TLV_TYPE_RESPONSE8 24 |
| 53 | +#define TLV_TYPE_RESPONSE9 25 |
| 54 | +#define TLV_TYPE_RESPONSE10 26 |
| 55 | +#define TLV_TYPE_OPTHEADER 27 |
| 56 | +#define TLV_TYPE_NOBODY 28 |
| 57 | +#define TLV_TYPE_FOLLOWLOCATION 29 |
| 58 | +#define TLV_TYPE_ACCEPTENCODING 30 |
| 59 | +#define TLV_TYPE_SECOND_RESPONSE0 31 |
| 60 | +#define TLV_TYPE_SECOND_RESPONSE1 32 |
| 61 | +#define TLV_TYPE_WILDCARDMATCH 33 |
| 62 | +#define TLV_TYPE_RTSP_REQUEST 34 |
| 63 | +#define TLV_TYPE_RTSP_SESSION_ID 35 |
| 64 | +#define TLV_TYPE_RTSP_STREAM_URI 36 |
| 65 | +#define TLV_TYPE_RTSP_TRANSPORT 37 |
| 66 | +#define TLV_TYPE_RTSP_CLIENT_CSEQ 38 |
| 67 | +#define TLV_TYPE_MAIL_AUTH 39 |
| 68 | +#define TLV_TYPE_HTTP_VERSION 40 |
| 69 | +#define TLV_TYPE_DOH_URL 41 |
| 70 | +#define TLV_TYPE_LOGIN_OPTIONS 42 |
| 71 | +#define TLV_TYPE_XOAUTH2_BEARER 43 |
| 72 | +#define TLV_TYPE_USERPWD 44 |
| 73 | +#define TLV_TYPE_USERAGENT 45 |
| 74 | +#define TLV_TYPE_NETRC 46 |
| 75 | +#define TLV_TYPE_SSH_HOST_PUBLIC_KEY_SHA256 47 |
| 76 | +#define TLV_TYPE_POST 48 |
| 77 | +#define TLV_TYPE_WS_OPTIONS 49 |
| 78 | +#define TLV_TYPE_CONNECT_ONLY 50 |
| 79 | +#define TLV_TYPE_HSTS 51 |
| 80 | +#define TLV_TYPE_HTTPPOSTBODY 52 |
70 | 81 |
|
71 | 82 | /** |
72 | 83 | * TLV function return codes. |
|
81 | 92 | /* Maximum write size in bytes to stop unbounded writes (50MB) */ |
82 | 93 | #define MAXIMUM_WRITE_LENGTH 52428800 |
83 | 94 |
|
| 95 | +/* convenience string for HTTPPOST body name */ |
| 96 | +#define FUZZ_HTTPPOST_NAME "test" |
| 97 | + |
84 | 98 | /* Cookie-jar path. */ |
85 | 99 | #define FUZZ_COOKIE_JAR_PATH "/dev/null" |
86 | 100 |
|
|
91 | 105 | #define TLV_MAX_NUM_CURLOPT_HEADER 2000 |
92 | 106 |
|
93 | 107 | /* Space variable for all CURLOPTs. */ |
94 | | -#define FUZZ_CURLOPT_TRACKER_SPACE 300 |
| 108 | +#define FUZZ_CURLOPT_TRACKER_SPACE 500 |
95 | 109 |
|
96 | 110 | /* Number of connections allowed to be opened */ |
97 | 111 | #define FUZZ_NUM_CONNECTIONS 2 |
@@ -211,6 +225,11 @@ typedef struct fuzz_data |
211 | 225 | curl_mime *mime; |
212 | 226 | curl_mimepart *part; |
213 | 227 |
|
| 228 | + /* httppost data */ |
| 229 | + struct curl_httppost *httppost; |
| 230 | + struct curl_httppost *last_post_part; |
| 231 | + char *post_body; |
| 232 | + |
214 | 233 | /* Server socket managers. Primarily socket manager 0 is used, but some |
215 | 234 | protocols (FTP) use two sockets. */ |
216 | 235 | FUZZ_SOCKET_MANAGER sockman[FUZZ_NUM_CONNECTIONS]; |
@@ -248,7 +267,7 @@ int fuzz_get_next_tlv(FUZZ_DATA *fuzz, TLV *tlv); |
248 | 267 | int fuzz_get_tlv_comn(FUZZ_DATA *fuzz, TLV *tlv); |
249 | 268 | int fuzz_parse_tlv(FUZZ_DATA *fuzz, TLV *tlv); |
250 | 269 | char *fuzz_tlv_to_string(TLV *tlv); |
251 | | - |
| 270 | +void fuzz_setup_http_post(FUZZ_DATA *fuzz, TLV *tlv); |
252 | 271 | int fuzz_add_mime_part(TLV *src_tlv, curl_mimepart *part); |
253 | 272 | int fuzz_parse_mime_tlv(curl_mimepart *part, TLV *tlv); |
254 | 273 | int fuzz_handle_transfer(FUZZ_DATA *fuzz); |
|
0 commit comments