aboutsummaryrefslogtreecommitdiff
path: root/test/fuzzers
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-03-24 13:07:00 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-03-24 13:07:00 +0100
commite658bbc00a11ac1599198b148144145ba2917f56 (patch)
tree3795acf99b14226c2a0d9f8d3a74d3f732f3422b /test/fuzzers
parent36beda51b769f1e61c33d8230a4718b2bdc6fe46 (diff)
downloadPROJ-e658bbc00a11ac1599198b148144145ba2917f56.tar.gz
PROJ-e658bbc00a11ac1599198b148144145ba2917f56.zip
fuzzer: limit input size to avoid useless testing of huge proj strings
Diffstat (limited to 'test/fuzzers')
-rwxr-xr-xtest/fuzzers/build_google_oss_fuzzers.sh3
-rw-r--r--test/fuzzers/standard_fuzzer.cpp8
2 files changed, 11 insertions, 0 deletions
diff --git a/test/fuzzers/build_google_oss_fuzzers.sh b/test/fuzzers/build_google_oss_fuzzers.sh
index 0cc618b9..b5612204 100755
--- a/test/fuzzers/build_google_oss_fuzzers.sh
+++ b/test/fuzzers/build_google_oss_fuzzers.sh
@@ -32,3 +32,6 @@ build_fuzzer()
}
build_fuzzer standard_fuzzer $(dirname $0)/standard_fuzzer.cpp
+
+echo "[libfuzzer]" > $OUT/standard_fuzzer.options
+echo "max_len = 10000" >> $OUT/standard_fuzzer.options
diff --git a/test/fuzzers/standard_fuzzer.cpp b/test/fuzzers/standard_fuzzer.cpp
index e1c3bbf3..11f8738e 100644
--- a/test/fuzzers/standard_fuzzer.cpp
+++ b/test/fuzzers/standard_fuzzer.cpp
@@ -64,6 +64,14 @@ int LLVMFuzzerInitialize(int* /*argc*/, char*** argv)
int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
{
+ if( len > 1000 )
+ {
+#ifdef STANDALONE
+ fprintf(stderr, "Input too large\n");
+#endif
+ return 0;
+ }
+
/* We expect the blob to be 3 lines: */
/* source proj string\ndestination proj string\nx y */
char* buf_dup = (char*)malloc(len+1);