summaryrefslogtreecommitdiff
path: root/contrib/oss-fuzz
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/oss-fuzz')
-rwxr-xr-xcontrib/oss-fuzz/build.sh11
-rw-r--r--contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc9
2 files changed, 18 insertions, 2 deletions
diff --git a/contrib/oss-fuzz/build.sh b/contrib/oss-fuzz/build.sh
index ccac210c..fe6bd340 100755
--- a/contrib/oss-fuzz/build.sh
+++ b/contrib/oss-fuzz/build.sh
@@ -37,7 +37,14 @@ popd
# Build libjbig
pushd "$SRC/jbigkit"
-make lib
+if [ "$ARCHITECTURE" = "i386" ]; then
+ echo "#!/bin/bash" > gcc
+ echo "clang -m32 \$*" >> gcc
+ chmod +x gcc
+ PATH=$PWD:$PATH make lib
+else
+ make lib
+fi
mv "$SRC"/jbigkit/libjbig/*.a "$WORK/lib/"
mv "$SRC"/jbigkit/libjbig/*.h "$WORK/include/"
popd
@@ -48,7 +55,7 @@ make install
$CXX $CXXFLAGS -std=c++11 -I$WORK/include \
$SRC/libtiff/contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc -o $OUT/tiff_read_rgba_fuzzer \
- -lFuzzingEngine $WORK/lib/libtiffxx.a $WORK/lib/libtiff.a $WORK/lib/libz.a $WORK/lib/libjpeg.a \
+ $LIB_FUZZING_ENGINE $WORK/lib/libtiffxx.a $WORK/lib/libtiff.a $WORK/lib/libz.a $WORK/lib/libjpeg.a \
$WORK/lib/libjbig.a $WORK/lib/libjbig85.a
mkdir afl_testcases
diff --git a/contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc b/contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc
index b1b189f8..ec1c9b63 100644
--- a/contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc
+++ b/contrib/oss-fuzz/tiff_read_rgba_fuzzer.cc
@@ -22,6 +22,7 @@
*/
#include <cstdint>
+#include <cstdlib>
#include <sstream>
#include <tiffio.h>
#include <tiffio.hxx>
@@ -40,6 +41,14 @@ extern "C" void handle_error(const char *unused, const char *unused2, va_list un
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
TIFFSetErrorHandler(handle_error);
TIFFSetWarningHandler(handle_error);
+#if defined(__has_feature)
+# if __has_feature(memory_sanitizer)
+ // libjpeg-turbo has issues with MSAN and SIMD code
+ // See https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7547
+ // and https://github.com/libjpeg-turbo/libjpeg-turbo/pull/365
+ setenv("JSIMD_FORCENONE" ,"1", 1);
+# endif
+#endif
std::istringstream s(std::string(Data,Data+Size));
TIFF* tif = TIFFStreamOpen("MemTIFF", &s);
if (!tif) {