Skip to content

Commit 2ccbc11

Browse files
Advenam Tacetelopez
authored andcommitted
fuzz_parsedate: fuzz date parsing with Curl_getdate_capped
Real target is function parsedate from parsedate.c The harness was written by Peter Goodman.
1 parent 623a6a9 commit 2ccbc11

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

Makefile.am

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ FUZZPROGS = curl_fuzzer \
4848
curl_fuzzer_imap \
4949
curl_fuzzer_ldap \
5050
curl_fuzzer_mqtt \
51+
curl_fuzzer_parsedate \
5152
curl_fuzzer_pop3 \
5253
curl_fuzzer_rtmp \
5354
curl_fuzzer_rtsp \
@@ -150,6 +151,10 @@ curl_fuzzer_doh_SOURCES = fuzz_doh.cc
150151
curl_fuzzer_doh_CXXFLAGS = $(COMMON_FLAGS) -I$(CURLDIR)
151152
curl_fuzzer_doh_LDADD = $(COMMON_LDADD)
152153

154+
curl_fuzzer_parsedate_SOURCES = fuzz_parsedate.cc
155+
curl_fuzzer_parsedate_CXXFLAGS = $(COMMON_FLAGS) -I$(CURLDIR)
156+
curl_fuzzer_parsedate_LDADD = $(COMMON_LDADD)
157+
153158
# Create the seed corpora zip files.
154159
zip:
155160
BUILD_ROOT=$(PWD) scripts/create_zip.sh

corpora/curl_fuzzer_parsedate/simple

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
123456789

fuzz_parsedate.cc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
extern "C"
2+
{
3+
#include <string.h>
4+
#include <curl/curl.h>
5+
#include <lib/parsedate.h>
6+
}
7+
8+
// fuzz_target.cc
9+
10+
extern "C" int LLVMFuzzerTestOneInput(char *data, size_t size) {
11+
time_t output = 0;
12+
char date[100];
13+
size_t len = size >= 100 ? 99 : size;
14+
memcpy(date, data, len);
15+
date[len] = 0;
16+
Curl_getdate_capped(date);
17+
return 0; // Values other than 0 and -1 are reserved for future use.
18+
}

scripts/fuzz_targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/bash
22

3-
export FUZZ_TARGETS="curl_fuzzer_dict curl_fuzzer_file curl_fuzzer_ftp curl_fuzzer_gopher curl_fuzzer_http curl_fuzzer_https curl_fuzzer_imap curl_fuzzer_ldap curl_fuzzer_mqtt curl_fuzzer_pop3 curl_fuzzer_rtmp curl_fuzzer_rtsp curl_fuzzer_scp curl_fuzzer_sftp curl_fuzzer_smb curl_fuzzer_smtp curl_fuzzer_tftp curl_fuzzer_ws curl_fuzzer fuzz_url curl_fuzzer_altsvc curl_fuzzer_base64 curl_fuzzer_doh"
3+
export FUZZ_TARGETS="curl_fuzzer_dict curl_fuzzer_file curl_fuzzer_ftp curl_fuzzer_gopher curl_fuzzer_http curl_fuzzer_https curl_fuzzer_imap curl_fuzzer_ldap curl_fuzzer_mqtt curl_fuzzer_pop3 curl_fuzzer_rtmp curl_fuzzer_rtsp curl_fuzzer_scp curl_fuzzer_sftp curl_fuzzer_smb curl_fuzzer_smtp curl_fuzzer_tftp curl_fuzzer_ws curl_fuzzer fuzz_url curl_fuzzer_altsvc curl_fuzzer_base64 curl_fuzzer_doh curl_fuzzer_parsedate"

0 commit comments

Comments
 (0)