GraphicsMagick: fuzzing: Add a coder_TIFF_any_fuzzer which auto-...
GraphicsMagick Commits <[email protected]> Sun, 02 Jun 2024 20:05:58 -0500
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.8536.1717376768.1586.graphicsmagick-commit@lists.sourceforge.net> |
changeset 91892851c4c0 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=91892851c4c0 summary: fuzzing: Add a coder_TIFF_any_fuzzer which auto-detects the input format but writes to TIFF. diffstat: ChangeLog | 8 +++++++ VisualMagick/installer/inc/version.isx | 4 +- fuzzing/coder_fuzzer.cc | 37 ++++++++++++++++++--------------- fuzzing/oss-fuzz-build.sh | 17 +++++++++++++++ magick/version.h | 4 +- www/ChangeLog.html | 9 ++++++++ 6 files changed, 58 insertions(+), 21 deletions(-) diffs (156 lines): diff -r 44c45e019392 -r 91892851c4c0 ChangeLog --- a/ChangeLog Sat Jun 01 16:00:21 2024 -0500 +++ b/ChangeLog Sun Jun 02 20:05:30 2024 -0500 @@ -1,3 +1,11 @@ +2024-06-02 Bob Friesenhahn <[email protected]> + + * fuzzing/oss-fuzz-build.sh: Add a coder_TIFF_any_fuzzer which + auto-detects the input format but writes to TIFF. + + * fuzzing/coder_fuzzer.cc (LLVMFuzzerTestOneInput): Update to be + able to disable forced read format. + 2024-06-01 Bob Friesenhahn <[email protected]> * fuzzing/oss-fuzz-build.sh: Assure that oss-fuzz provided CFLAGS diff -r 44c45e019392 -r 91892851c4c0 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sat Jun 01 16:00:21 2024 -0500 +++ b/VisualMagick/installer/inc/version.isx Sun Jun 02 20:05:30 2024 -0500 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020240601" -#define public MagickPackageReleaseDate "snapshot-20240601" +#define public MagickPackageVersionAddendum ".020240602" +#define public MagickPackageReleaseDate "snapshot-20240602" diff -r 44c45e019392 -r 91892851c4c0 fuzzing/coder_fuzzer.cc --- a/fuzzing/coder_fuzzer.cc Sat Jun 01 16:00:21 2024 -0500 +++ b/fuzzing/coder_fuzzer.cc Sun Jun 02 20:05:30 2024 -0500 @@ -11,25 +11,28 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - Magick::Image image; - std::string coder = FUZZ_CODER; - image.magick(coder); - image.fileName(coder + ":"); - // Add an arbitrary limit on JPEG scan lines - image.defineValue("JPEG", "max-scan-number", "50"); - const Magick::Blob blob(data, size); - try { - image.read(blob); - } catch (Magick::Exception &e) { - return 0; - } + Magick::Image image; + std::string coder = FUZZ_CODER; +#if !defined(FUZZ_GRAPHICSMAGICK_CODER_READANY) + image.magick(coder); + image.fileName(coder + ":"); +#endif + // Add an arbitrary limit on JPEG scan lines + image.defineValue("JPEG", "max-scan-number", "50"); + const Magick::Blob blob(data, size); + try { + image.read(blob); + } catch (Magick::Exception &e) { + return 0; + } #if FUZZ_GRAPHICSMAGICK_CODER_WRITE - Magick::Blob outBlob; - try { - image.write(&outBlob, coder); - } catch (Magick::Exception &e) {} + Magick::Blob outBlob; + try { + image.magick(coder); + image.write(&outBlob, coder); + } catch (Magick::Exception &e) {} #endif - return 0; + return 0; } diff -r 44c45e019392 -r 91892851c4c0 fuzzing/oss-fuzz-build.sh --- a/fuzzing/oss-fuzz-build.sh Sat Jun 01 16:00:21 2024 -0500 +++ b/fuzzing/oss-fuzz-build.sh Sun Jun 02 20:05:30 2024 -0500 @@ -14,6 +14,7 @@ # or maybe" # # ~/src/GM% docker cp fuzzing/oss-fuzz-build.sh $(docker ps -lq):/src/graphicsmagick/fuzzing/oss-fuzz-build.sh +# ~/src/GM% docker cp fuzzing/coder_fuzzer.cc $(docker ps -lq):/src/graphicsmagick/fuzzing/ # # # Useful environment variables: @@ -620,6 +621,8 @@ MAGICK_LIBS="$(pkg-config --static --libs-only-L GraphicsMagick++) $(pkg-config --static --libs-only-other GraphicsMagick++) $(pkg-config pkg-config --static --libs-only-l GraphicsMagick++)" printf "MAGICK_LIBS=${MAGICK_LIBS}\n" +# FUZZ_GRAPHICSMAGICK_CODER_READANY + printf "=== Building fuzzers...\n" for f in fuzzing/*_fuzzer.cc; do fuzzer=$(basename "$f" _fuzzer.cc) @@ -651,6 +654,7 @@ coder_flags="$coder_flags -DFUZZ_GRAPHICSMAGICK_CODER_WRITE=1" fi + # Build fuzzers which force the input format target="${OUT}/coder_${coder}_fuzzer" printf "=== Building ${target}...\n" set -x @@ -659,6 +663,19 @@ $coder_flags $LIB_FUZZING_ENGINE $MAGICK_LIBS set +x + # Additionally build fuzzers which auto-detect input for coders which write output + if [ "${coder}" == 'TIFF' ]; then + coder_flags="$coder_flags -DFUZZ_GRAPHICSMAGICK_CODER_WRITE=1 -DFUZZ_GRAPHICSMAGICK_CODER_READANY=1" + target="${OUT}/coder_${coder}_any_fuzzer" + + printf "=== Building ${target}...\n" + set -x + $CXX $CXXFLAGS -std=c++11 -I"$WORK/include/GraphicsMagick" \ + fuzzing/coder_fuzzer.cc -o "${target}" \ + $coder_flags $LIB_FUZZING_ENGINE $MAGICK_LIBS + set +x + fi + if [ -f "fuzzing/dictionaries/${coder}.dict" ]; then cp "fuzzing/dictionaries/${coder}.dict" "${OUT}/coder_${coder}_fuzzer.dict" fi diff -r 44c45e019392 -r 91892851c4c0 magick/version.h --- a/magick/version.h Sat Jun 01 16:00:21 2024 -0500 +++ b/magick/version.h Sun Jun 02 20:05:30 2024 -0500 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x282500 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 28,25,0 -#define MagickChangeDate "20240601" -#define MagickReleaseDate "snapshot-20240601" +#define MagickChangeDate "20240602" +#define MagickReleaseDate "snapshot-20240602" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 44c45e019392 -r 91892851c4c0 www/ChangeLog.html --- a/www/ChangeLog.html Sat Jun 01 16:00:21 2024 -0500 +++ b/www/ChangeLog.html Sun Jun 02 20:05:30 2024 -0500 @@ -38,6 +38,15 @@ <div class="document" id="graphicsmagick-changelog"> <h1 class="title">GraphicsMagick ChangeLog</h1> +<p>2024-06-02 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>fuzzing/oss-fuzz-build.sh: Add a coder_TIFF_any_fuzzer which +auto-detects the input format but writes to TIFF.</p></li> +<li><p>fuzzing/coder_fuzzer.cc (LLVMFuzzerTestOneInput): Update to be +able to disable forced read format.</p></li> +</ul> +</blockquote> <p>2024-06-01 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple">