GraphicsMagick: fuzzing/oss-fuzz-build.sh: Added support for bui...

GraphicsMagick Commits <[email protected]> Sun, 14 Jul 2024 18:29:32 -0500
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.778.1720999785.7812.graphicsmagick-commit@lists.sourceforge.net>
changeset 806b1c07f221 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=806b1c07f221
summary: fuzzing/oss-fuzz-build.sh: Added support for building libzip.

diffstat:

 ChangeLog                              |   4 ++
 VisualMagick/installer/inc/version.isx |   4 +-
 fuzzing/oss-fuzz-build.sh              |  56 ++++++++++++++++++++++++++++++++++
 magick/version.h                       |   4 +-
 www/ChangeLog.html                     |   6 +++
 5 files changed, 70 insertions(+), 4 deletions(-)

diffs (146 lines):

diff -r 7695ab54cee1 -r 806b1c07f221 ChangeLog
--- a/ChangeLog	Sat Jul 13 18:15:14 2024 -0500
+++ b/ChangeLog	Sun Jul 14 18:29:09 2024 -0500
@@ -1,3 +1,7 @@
+2024-07-14  Bob Friesenhahn  <[email protected]>
+
+	* fuzzing/oss-fuzz-build.sh: Added support for building libzip.
+
 2024-07-13  Bob Friesenhahn  <[email protected]>
 
 	* magick/display.c (MagickXROIImage): Fix clang-analyzer issue.
diff -r 7695ab54cee1 -r 806b1c07f221 VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Sat Jul 13 18:15:14 2024 -0500
+++ b/VisualMagick/installer/inc/version.isx	Sun Jul 14 18:29:09 2024 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020240713"
-#define public MagickPackageReleaseDate "snapshot-20240713"
+#define public MagickPackageVersionAddendum ".020240714"
+#define public MagickPackageReleaseDate "snapshot-20240714"
diff -r 7695ab54cee1 -r 806b1c07f221 fuzzing/oss-fuzz-build.sh
--- a/fuzzing/oss-fuzz-build.sh	Sat Jul 13 18:15:14 2024 -0500
+++ b/fuzzing/oss-fuzz-build.sh	Sun Jul 14 18:29:09 2024 -0500
@@ -16,6 +16,9 @@
 # ~/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/
 #
+# Execute in the oss-fuzz shell environment like "/src/build.sh" while
+# in the initial "/src/graphicsmagick" directory.
+#
 #
 # Useful environment variables:
 #
@@ -29,6 +32,15 @@
 # OUT=/out
 # SRC=/src
 
+printf "SANITIZER=${SANITIZER}\n"
+printf "ARCHITECTURE=${ARCHITECTURE}\n"
+printf "FUZZING_ENGINE=${FUZZING_ENGINE}\n"
+printf "LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE}\n"
+printf "FUZZER_LDFLAGS=${FUZZER_LDFLAGS}\n"
+printf "WORK=${WORK}\n"
+printf "OUT=${OUT}\n"
+printf "SRC=${SRC}\n"
+
 enable_aom=true
 enable_bzip2=true
 enable_de265=true
@@ -46,6 +58,7 @@
 enable_xml=false
 enable_xz=true
 enable_zstd=true
+enable_libzip=true
 
 export PKG_CONFIG_PATH="$WORK/lib/pkgconfig"
 export PKG_CONFIG='pkg-config --static'
@@ -71,6 +84,8 @@
 printf "OUT=${OUT}\n"
 ls -l "${OUT}"
 
+rm -f ${OUT}/*_fuzzer
+
 set -x
 
 # build zlib
@@ -579,6 +594,47 @@
     popd
 fi
 
+# Libzip also wants Nettle, GnuTLS, MbedTLS, or OpenSSL (checked in
+# that order).  Each of these is quite an onerous dependency!
+# Hopefully not required in order to work. Libzip's own oss-fuzz build
+# seems to dynamically link with OpenSSL and expects the same shared
+# library on the fuzzing host.
+if $enable_libzip
+then
+    LIBZIP_BUILD="${SRC}/libzip_build"
+    if [ -d ${SRC}/libzip ]
+    then
+        printf "=== Building ${SRC}/libzip...\n"
+        rm -rf ${LIBZIP_BUILD}
+        mkdir -p ${LIBZIP_BUILD}
+        pushd ${LIBZIP_BUILD}
+        cmake \
+            -DBUILD_SHARED_LIBS=off \
+            -DBUILD_TESTING=off \
+            -DCMAKE_BUILD_TYPE=Debug \
+            -DCMAKE_CXX_COMPILER=$CXX \
+            -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+            -DCMAKE_C_COMPILER=$CC \
+            -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+            -DCMAKE_INSTALL_PREFIX=$WORK \
+            -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
+            -DBUILD_DOC=OFF \
+            -DBUILD_EXAMPLES=OFF \
+            -DBUILD_OSSFUZZ=OFF \
+            -DBUILD_REGRESS=OFF \
+            -DBUILD_TOOLS=OFF \
+            -DBUILD_TOOLS=OFF \
+            -DENABLE_GNUTLS=OFF \
+            -DENABLE_MBEDTLS=OFF \
+            -DENABLE_OPENSSL=OFF \
+            -DHAVE_CRYPTO=OFF  \
+            "${SRC}/libzip"
+        make -j$(nproc)
+        make install
+        popd
+    fi
+fi
+
 printf "Built libraries:\n"
 ls -l ${WORK}/lib
 
diff -r 7695ab54cee1 -r 806b1c07f221 magick/version.h
--- a/magick/version.h	Sat Jul 13 18:15:14 2024 -0500
+++ b/magick/version.h	Sun Jul 14 18:29:09 2024 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x282500
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 28,25,0
-#define MagickChangeDate   "20240713"
-#define MagickReleaseDate  "snapshot-20240713"
+#define MagickChangeDate   "20240714"
+#define MagickReleaseDate  "snapshot-20240714"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 7695ab54cee1 -r 806b1c07f221 www/ChangeLog.html
--- a/www/ChangeLog.html	Sat Jul 13 18:15:14 2024 -0500
+++ b/www/ChangeLog.html	Sun Jul 14 18:29:09 2024 -0500
@@ -38,6 +38,12 @@
 
 <main id="graphicsmagick-changelog">
 <h1 class="title">GraphicsMagick ChangeLog</h1>
+<p>2024-07-14  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
+<blockquote>
+<ul class="simple">
+<li><p>fuzzing/oss-fuzz-build.sh: Added support for building libzip.</p></li>
+</ul>
+</blockquote>
 <p>2024-07-13  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 <blockquote>
 <ul class="simple">