aboutsummaryrefslogtreecommitdiff
path: root/test/fuzzers
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-01-26 18:34:36 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-01-26 19:39:51 +0100
commit0f22959cb2f052fd55e2b8b83289d9eca7b1c71f (patch)
tree41e511ae88eac4a3c8e178843e7d38d60396157d /test/fuzzers
parent9cdebf7ecf248f1d77ccd5a932144bd9eccc3863 (diff)
downloadPROJ-0f22959cb2f052fd55e2b8b83289d9eca7b1c71f.tar.gz
PROJ-0f22959cb2f052fd55e2b8b83289d9eca7b1c71f.zip
Fix ossfuzz builds [ci skip]
Diffstat (limited to 'test/fuzzers')
-rwxr-xr-xtest/fuzzers/build.sh75
-rwxr-xr-xtest/fuzzers/build_google_oss_fuzzers.sh41
-rwxr-xr-xtest/fuzzers/build_seed_corpus.sh12
-rw-r--r--test/fuzzers/proj_crs_to_crs_fuzzer.cpp6
4 files changed, 77 insertions, 57 deletions
diff --git a/test/fuzzers/build.sh b/test/fuzzers/build.sh
new file mode 100755
index 00000000..c971a739
--- /dev/null
+++ b/test/fuzzers/build.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+# This script is meant to be run by
+# https://github.com/google/oss-fuzz/blob/master/projects/proj.4/Dockerfile
+
+set -e
+
+if [ "$SRC" == "" ]; then
+ echo "SRC env var not defined"
+ exit 1
+fi
+
+if [ "$OUT" == "" ]; then
+ echo "OUT env var not defined"
+ exit 1
+fi
+
+if [ "$CXX" == "" ]; then
+ echo "CXX env var not defined"
+ exit 1
+fi
+
+if [ "$LIB_FUZZING_ENGINE" = "" ]; then
+ export LIB_FUZZING_ENGINE=-lFuzzingEngine
+fi
+
+I386_PACKAGES="zlib1g-dev:i386 libssl-dev:i386 libsqlite3-dev:i386 \
+ libtiff5-dev:i386"
+X64_PACKAGES="zlib1g-dev libssl-dev libsqlite3-dev \
+ libtiff5-dev"
+
+if [ "$ARCHITECTURE" = "i386" ]; then
+ apt-get install -y $I386_PACKAGES
+else
+ apt-get install -y $X64_PACKAGES
+fi
+
+# build libcurl.a (builing against Ubuntu libcurl.a doesn't work easily)
+cd curl
+./buildconf
+./configure --disable-shared --prefix=$SRC/install
+make clean -s
+make -j$(nproc) -s
+make install
+cd ..
+
+./autogen.sh
+SQLITE3_CFLAGS=-I/usr/include SQLITE3_LIBS=-lsqlite3 TIFF_CFLAGS=-I/usr/include TIFF_LIBS=-ltiff ./configure --disable-shared --with-curl=$SRC/install/bin/curl-config
+make clean -s
+make -j$(nproc) -s
+
+EXTRA_LIBS="-lpthread -lsqlite3 -ltiff -Wl,-Bstatic -L$SRC/install/lib -lcurl -lssl -lcrypto -lz -Wl,-Bdynamic"
+
+build_fuzzer()
+{
+ fuzzerName=$1
+ sourceFilename=$2
+ shift
+ shift
+ echo "Building fuzzer $fuzzerName"
+ $CXX $CXXFLAGS -std=c++11 -fvisibility=hidden -Isrc -Iinclude \
+ $sourceFilename $* -o $OUT/$fuzzerName \
+ $LIB_FUZZING_ENGINE src/.libs/libproj.a $EXTRA_LIBS
+}
+
+build_fuzzer standard_fuzzer test/fuzzers/standard_fuzzer.cpp
+build_fuzzer proj_crs_to_crs_fuzzer test/fuzzers/proj_crs_to_crs_fuzzer.cpp
+
+echo "[libfuzzer]" > $OUT/standard_fuzzer.options
+echo "max_len = 10000" >> $OUT/standard_fuzzer.options
+
+echo "[libfuzzer]" > $OUT/proj_crs_to_crs_fuzzer.options
+echo "max_len = 10000" >> $OUT/proj_crs_to_crs_fuzzer.options
+
+cp -r data/* $OUT
diff --git a/test/fuzzers/build_google_oss_fuzzers.sh b/test/fuzzers/build_google_oss_fuzzers.sh
deleted file mode 100755
index cd9fed49..00000000
--- a/test/fuzzers/build_google_oss_fuzzers.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-
-set -e
-
-if [ "$SRC" == "" ]; then
- echo "SRC env var not defined"
- exit 1
-fi
-
-if [ "$OUT" == "" ]; then
- echo "OUT env var not defined"
- exit 1
-fi
-
-if [ "$CXX" == "" ]; then
- echo "CXX env var not defined"
- exit 1
-fi
-
-SRC_DIR=$(dirname $0)/../..
-
-build_fuzzer()
-{
- fuzzerName=$1
- sourceFilename=$2
- shift
- shift
- echo "Building fuzzer $fuzzerName"
- $CXX $CXXFLAGS -std=c++11 -fvisibility=hidden -I$SRC_DIR/src -I$SRC_DIR/include \
- $sourceFilename $* -o $OUT/$fuzzerName \
- -lFuzzingEngine $SRC_DIR/src/.libs/libproj.a -lpthread /usr/lib/x86_64-linux-gnu/libsqlite3.a $EXTRA_LIBS
-}
-
-build_fuzzer standard_fuzzer $(dirname $0)/standard_fuzzer.cpp
-build_fuzzer proj_crs_to_crs_fuzzer $(dirname $0)/proj_crs_to_crs_fuzzer.cpp
-
-echo "[libfuzzer]" > $OUT/standard_fuzzer.options
-echo "max_len = 10000" >> $OUT/standard_fuzzer.options
-
-echo "[libfuzzer]" > $OUT/proj_crs_to_crs_fuzzer.options
-echo "max_len = 10000" >> $OUT/proj_crs_to_crs_fuzzer.options
diff --git a/test/fuzzers/build_seed_corpus.sh b/test/fuzzers/build_seed_corpus.sh
deleted file mode 100755
index cdd3cfc3..00000000
--- a/test/fuzzers/build_seed_corpus.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-set -e
-
-if [ "$OUT" == "" ]; then
- echo "OUT env var not defined"
- exit 1
-fi
-
-SRC_DIR=$(dirname $0)/../..
-
-cp -r $SRC_DIR/data/* $OUT
diff --git a/test/fuzzers/proj_crs_to_crs_fuzzer.cpp b/test/fuzzers/proj_crs_to_crs_fuzzer.cpp
index 9b4b1ed9..a23cc0d9 100644
--- a/test/fuzzers/proj_crs_to_crs_fuzzer.cpp
+++ b/test/fuzzers/proj_crs_to_crs_fuzzer.cpp
@@ -34,7 +34,6 @@
#include <sys/types.h>
#include <unistd.h>
-#include "proj_internal.h" // For pj_gc_unloadall()
#include "proj.h"
/* Standalone build:
@@ -47,7 +46,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len);
int LLVMFuzzerInitialize(int* /*argc*/, char*** argv)
{
const char* argv0 = (*argv)[0];
- char* path = pj_strdup(argv0);
+ char* path = strdup(argv0);
char* lastslash = strrchr(path, '/');
if( lastslash )
{
@@ -96,8 +95,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
proj_create_crs_to_crs(nullptr, first_line, second_line, nullptr));
free(buf_dup);
- pj_gc_unloadall(pj_get_default_ctx());
- pj_deallocate_grids();
+ proj_cleanup();
return 0;
}