GraphicsMagick: 2 new changesets

GraphicsMagick Commits <[email protected]> Sun, 19 May 2024 10:53:16 -0500
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.3594.1716134021.1586.graphicsmagick-commit@lists.sourceforge.net>
changeset 25c6875be837 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=25c6875be837
summary: coders/tiff.c Typo: It is better to remove commented out code completelly.

changeset 6f89ea4b8c0b in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=6f89ea4b8c0b
summary: fuzzing/oss-fuzz-build.sh: Fix 'undefined' sanitizer linkage error. Disable building libx265 .

diffstat:

 ChangeLog                              |    6 +
 VisualMagick/installer/inc/version.isx |    4 +-
 coders/tiff.c                          |    2 -
 fuzzing/oss-fuzz-build.sh              |  194 ++++++++++++++++++++------------
 magick/version.h                       |    4 +-
 www/ChangeLog.html                     |    8 +
 6 files changed, 136 insertions(+), 82 deletions(-)

diffs (320 lines):

diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b ChangeLog
--- a/ChangeLog	Thu May 16 08:25:01 2024 -0500
+++ b/ChangeLog	Sun May 19 10:52:43 2024 -0500
@@ -1,3 +1,9 @@
+2024-05-19  Bob Friesenhahn  <[email protected]>
+
+	* fuzzing/oss-fuzz-build.sh: Fix 'undefined' sanitizer linkage
+	error. Disable building libx265 until the problem that its package
+	config file has now gone missing is addressed.
+
 2024-05-16  Bob Friesenhahn  <[email protected]>
 
 	* coders/{bmp.c,jxl.c,mat.c,tga.c,tiff.c,topol.c,wpg.c}: Remove
diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Thu May 16 08:25:01 2024 -0500
+++ b/VisualMagick/installer/inc/version.isx	Sun May 19 10:52:43 2024 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020240516"
-#define public MagickPackageReleaseDate "snapshot-20240516"
+#define public MagickPackageVersionAddendum ".020240519"
+#define public MagickPackageReleaseDate "snapshot-20240519"
diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b coders/tiff.c
--- a/coders/tiff.c	Thu May 16 08:25:01 2024 -0500
+++ b/coders/tiff.c	Sun May 19 10:52:43 2024 -0500
@@ -4526,7 +4526,6 @@
   {
     if(profile_length < (size_t)(IFD_data-profile_data)+2) return 0;
     EntryNum = LD_UINT16(IFD_data);
-    /* profile_length-=2; */
     if(profile_length < (size_t)(IFD_data-profile_data)+(EntryNum*12)) return 0;
     IFD_data+=2;
 
@@ -4767,7 +4766,6 @@
 NextItem:
       if(profile_length <= 12)
           break;
-      /* profile_length -=12; */
       IFD_data += 12;
       EntryNum--;
     }
diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b fuzzing/oss-fuzz-build.sh
--- a/fuzzing/oss-fuzz-build.sh	Thu May 16 08:25:01 2024 -0500
+++ b/fuzzing/oss-fuzz-build.sh	Sun May 19 10:52:43 2024 -0500
@@ -3,10 +3,28 @@
 # This is intended to be run from OSS-Fuzz's build environment. We intend to
 # eventually refactor it to be easy to run locally.
 
-# For local testing of fuzzing/oss-fuzz-build.sh do:
-# ~/src/GM% cp fuzzing/oss-fuzz-build.sh ../oss-fuzz-heptapod/projects/graphicsmagick/
+# For local testing of fuzzing/oss-fuzz-build.sh in 'compile' mode do:
+#
+# Check 'compile' prompt for docker container id
+# (e.g. '04a46e46f7af'). Can also check the output of 'docker ps -lq'.
+#
+# Then do:
+# ~/src/GM% docker cp fuzzing/oss-fuzz-build.sh 04a46e46f7af:/src/graphicsmagick/fuzzing/oss-fuzz-build.sh
+#
+#
+# Useful environment variables:
+#
+# SANITIZER={address/memory/undefined}
+# ARCHITECTURE={x86_64/i386}
+# FUZZING_ENGINE
+# LIB_FUZZING_ENGINE
+# FUZZER_LDFLAGS
+# FUZZING_LANGUAGE
+# WORK=/work
 
+enable_aom=true
 enable_bzip2=true
+enable_de265=true
 enable_freetype=true
 enable_heif=true
 enable_jasper=true
@@ -17,6 +35,7 @@
 enable_png=true
 enable_tiff=true
 enable_webp=true
+enable_x265=false
 enable_xml=false
 enable_xz=true
 enable_zstd=true
@@ -318,92 +337,104 @@
     # Build libx265 (a C++ library)
     # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static x265 --libs
     #    -L/work/lib -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl
-    libx265="$SRC/x265"
-    libx265_build="${libx265}/build/linux"
-    if [ -d "${libx265_build}" ]
-    then
-        pushd "${libx265_build}"
-        printf "=== Building ${SRC}/libx265...\n"
-        cmake -G "Unix Makefiles" \
-              -DCMAKE_C_COMPILER=$CC \
-              -DCMAKE_CXX_COMPILER=$CXX \
-              -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
-              -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-              -DCMAKE_INSTALL_PREFIX="$WORK" \
-              -DENABLE_SHARED:bool=off \
-                 ../../source
-        make clean
-        make -j$(nproc) x265-static
-        make install
-        popd
-    else
-        printf "=== Skipping missing ${libx265_build}! ===\n"
+    # include(Version) # determine X265_VERSION and X265_LATEST_TAG
+    if $enable_x265
+       then
+           libx265="$SRC/x265"
+           libx265_build="${libx265}/build/linux"
+           if [ -d "${libx265_build}" ]
+           then
+               pushd "${libx265_build}"
+               printf "=== Building ${SRC}/libx265...\n"
+               cmake -G "Unix Makefiles" \
+                     -DCMAKE_C_COMPILER=$CC \
+                     -DCMAKE_CXX_COMPILER=$CXX \
+                     -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+                     -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+                     -DCMAKE_INSTALL_PREFIX="$WORK" \
+                     -DENABLE_SHARED:STRING=off \
+                     -DENABLE_ASSEMBLY:BOOL=OFF \
+                     -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
+                     ../../source
+               make clean
+               make -j$(nproc) x265-static
+               make install
+               popd
+           else
+               printf "=== Skipping missing ${libx265_build}! ===\n"
+           fi
     fi
 
     # Build libde265 (a C++ library)
     # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libde265 --libs
     #     -L/work/lib -lde265 -lc++
     libde265="$SRC/libde265"
-    if [ -d "${libde265}" ]
+    if $enable_de265
     then
-        printf "=== Building ${libde265}...\n"
-        pushd "${libde265}"
-        ./autogen.sh
-        ./configure \
-            CFLAGS="$CFLAGS -fPIC" \
-            --prefix="$WORK" \
-            --disable-shared \
-            --enable-static \
-            --disable-dec265 \
-            --disable-sherlock265 \
-            --disable-hdrcopy \
-            --disable-enc265 \
-            --disable-acceleration_speed
-        make clean
-        make -j$(nproc)
-        # Fix broken libde265.pc
-        sed -i 's/@LIBS_PRIVATE@/-lc++/' libde265.pc
-        make install
-        popd
-    else
-        printf "=== Skipping missing ${libde265}! ===\n"
+       if [ -d "${libde265}" ]
+       then
+           printf "=== Building ${libde265}...\n"
+           pushd "${libde265}"
+           ./autogen.sh
+           ./configure \
+               CFLAGS="$CFLAGS -fPIC" \
+               --prefix="$WORK" \
+               --disable-shared \
+               --enable-static \
+               --disable-dec265 \
+               --disable-sherlock265 \
+               --disable-hdrcopy \
+               --disable-enc265 \
+               --disable-acceleration_speed
+           make clean
+           make -j$(nproc)
+           # Fix broken libde265.pc
+           sed -i 's/@LIBS_PRIVATE@/-lc++/' libde265.pc
+           make install
+           popd
+       else
+           printf "=== Skipping missing ${libde265}! ===\n"
+       fi
     fi
 
     # Build libaom (a mixed C/C++ library)
     # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static aom --libs
     #    -L/work/lib -laom -lm -lpthread
-    aom_src="${SRC}/aom"
-    if [ -d "${aom_src}" ]
+    if $enable_aom
     then
-        printf "=== Building ${aom_src}...\n"
-        AOM_BUILD="${SRC}/aom_build"
-        rm -rf "${AOM_BUILD}"
-        mkdir -p "${AOM_BUILD}"
-        pushd "${AOM_BUILD}"
-        cmake -G "Unix Makefiles" \
-              -DCMAKE_C_COMPILER=$CC \
-              -DCMAKE_CXX_COMPILER=$CXX \
-              -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
-              -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-              -DCMAKE_INSTALL_PREFIX="$WORK" \
-              -DENABLE_SHARED:bool=off \
-              -DCONFIG_PIC=1 \
-              -DENABLE_EXAMPLES=0 \
-              -DENABLE_DOCS=0 \
-              -DENABLE_TESTS=0 \
-              -DCONFIG_SIZE_LIMIT=1 \
-              -DDECODE_HEIGHT_LIMIT=12288 \
-              -DDECODE_WIDTH_LIMIT=12288 \
-              -DDO_RANGE_CHECK_CLAMP=1 \
-              -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
-              -DAOM_TARGET_CPU=generic \
-              ${aom_src}
-        make clean
-        make -j$(nproc)
-        make install
-        popd
-    else
-        printf "=== Skipping missing ${aom_src}! ===\n"
+        aom_src="${SRC}/aom"
+        if [ -d "${aom_src}" ]
+        then
+            printf "=== Building ${aom_src}...\n"
+            AOM_BUILD="${SRC}/aom_build"
+            rm -rf "${AOM_BUILD}"
+            mkdir -p "${AOM_BUILD}"
+            pushd "${AOM_BUILD}"
+            cmake -G "Unix Makefiles" \
+                  -DCMAKE_C_COMPILER=$CC \
+                  -DCMAKE_CXX_COMPILER=$CXX \
+                  -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+                  -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+                  -DCMAKE_INSTALL_PREFIX="$WORK" \
+                  -DENABLE_SHARED:bool=off \
+                  -DCONFIG_PIC=1 \
+                  -DENABLE_EXAMPLES=0 \
+                  -DENABLE_DOCS=0 \
+                  -DENABLE_TESTS=0 \
+                  -DCONFIG_SIZE_LIMIT=1 \
+                  -DDECODE_HEIGHT_LIMIT=12288 \
+                  -DDECODE_WIDTH_LIMIT=12288 \
+                  -DDO_RANGE_CHECK_CLAMP=1 \
+                  -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
+                  -DAOM_TARGET_CPU=generic \
+                  ${aom_src}
+            make clean
+            make -j$(nproc)
+            make install
+            popd
+        else
+            printf "=== Skipping missing ${aom_src}! ===\n"
+        fi
     fi
 
     # Build libheif (a C++ library)
@@ -534,12 +565,23 @@
 # pkg-config names GraphicsMagick, GraphicsMagickWand, GraphicsMagick++
 # -stdlib=libc++'
 printf "=== Building GraphicsMagick...\n"
+case "$SANITIZER" in
+    address)
+        EXTRA_LIBS=-lc++
+    ;;
+    memory)
+        EXTRA_LIBS=-lc++
+    ;;
+    undefined)
+        EXTRA_LIBS='-lubsan -lc++'
+    ;;
+esac
 ./bootstrap
 PATH=$WORK/bin:$PATH PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
     CPPFLAGS="-I$WORK/include/libpng16 -I$WORK/include/freetype2 -I$WORK/include/libxml2 -I$WORK/include" \
     CFLAGS="$CFLAGS" \
     LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-    LIBS=-lc++ \
+    LIBS="$EXTRA_LIBS" \
     --prefix="$WORK" \
     --disable-compressed-files \
     --without-perl \
diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b magick/version.h
--- a/magick/version.h	Thu May 16 08:25:01 2024 -0500
+++ b/magick/version.h	Sun May 19 10:52:43 2024 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x282500
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 28,25,0
-#define MagickChangeDate   "20240516"
-#define MagickReleaseDate  "snapshot-20240516"
+#define MagickChangeDate   "20240519"
+#define MagickReleaseDate  "snapshot-20240519"
 
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r 1f4005a1b5f0 -r 6f89ea4b8c0b www/ChangeLog.html
--- a/www/ChangeLog.html	Thu May 16 08:25:01 2024 -0500
+++ b/www/ChangeLog.html	Sun May 19 10:52:43 2024 -0500
@@ -38,6 +38,14 @@
 
 <div class="document" id="graphicsmagick-changelog">
 <h1 class="title">GraphicsMagick ChangeLog</h1>
+<p>2024-05-19  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: Fix 'undefined' sanitizer linkage
+error. Disable building libx265 until the problem that its package
+config file has now gone missing is addressed.</p></li>
+</ul>
+</blockquote>
 <p>2024-05-16  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">