diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-01-26 18:34:36 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-01-26 19:39:51 +0100 |
| commit | 0f22959cb2f052fd55e2b8b83289d9eca7b1c71f (patch) | |
| tree | 41e511ae88eac4a3c8e178843e7d38d60396157d /test/fuzzers | |
| parent | 9cdebf7ecf248f1d77ccd5a932144bd9eccc3863 (diff) | |
| download | PROJ-0f22959cb2f052fd55e2b8b83289d9eca7b1c71f.tar.gz PROJ-0f22959cb2f052fd55e2b8b83289d9eca7b1c71f.zip | |
Fix ossfuzz builds [ci skip]
Diffstat (limited to 'test/fuzzers')
| -rwxr-xr-x | test/fuzzers/build.sh | 75 | ||||
| -rwxr-xr-x | test/fuzzers/build_google_oss_fuzzers.sh | 41 | ||||
| -rwxr-xr-x | test/fuzzers/build_seed_corpus.sh | 12 | ||||
| -rw-r--r-- | test/fuzzers/proj_crs_to_crs_fuzzer.cpp | 6 |
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; } |
