GraphicsMagick: Changes pertaining to file read/write file size ...
GraphicsMagick Commits <[email protected]> Sun, 21 Jan 2024 15:32:59 -0600
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.250.1705872796.1736.graphicsmagick-commit@lists.sourceforge.net> |
changeset 60f313f3728a in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=60f313f3728a summary: Changes pertaining to file read/write file size limits during normal and oss-fuzz testing. diffstat: ChangeLog | 14 +++++ VisualMagick/installer/inc/version.isx | 4 +- common.shi.in | 86 +++++++++++++++++++++++++++++++++- fuzzing/utils.cc | 1 + magick/blob.c | 7 ++- magick/version.h | 4 +- utilities/tests/common.sh | 7 -- utilities/tests/hald-clut.tap | 4 +- www/Changelog.html | 13 +++++ 9 files changed, 124 insertions(+), 16 deletions(-) diffs (240 lines): diff -r 26fce892769e -r 60f313f3728a ChangeLog --- a/ChangeLog Sat Jan 20 10:00:07 2024 -0600 +++ b/ChangeLog Sun Jan 21 15:32:55 2024 -0600 @@ -1,3 +1,17 @@ +2024-01-21 Bob Friesenhahn <[email protected]> + + * utilities/tests/common.sh, common.shi.in: Apply tight read and + write file size limits during testing. + + * utilities/tests/hald-clut.tap (levels): Make messaging about + levels more distinct during Hald CLUT testing. + + * fuzzing/utils.cc: Set a write resource limit during oss-fuzz + testing. + + * magick/blob.c (ReadBlobByte): EOF detection requires reading + past the end of the file, so allow for that. + 2024-01-20 Bob Friesenhahn <[email protected]> * Copyright.txt, scripts/html_fragments.py, ChangeLog.2023: Rotate diff -r 26fce892769e -r 60f313f3728a VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sat Jan 20 10:00:07 2024 -0600 +++ b/VisualMagick/installer/inc/version.isx Sun Jan 21 15:32:55 2024 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020240120" -#define public MagickPackageReleaseDate "snapshot-20240120" +#define public MagickPackageVersionAddendum ".020240121" +#define public MagickPackageReleaseDate "snapshot-20240121" diff -r 26fce892769e -r 60f313f3728a common.shi.in --- a/common.shi.in Sat Jan 20 10:00:07 2024 -0600 +++ b/common.shi.in Sun Jan 21 15:32:55 2024 -0600 @@ -6,6 +6,13 @@ top_srcdir='@abs_top_srcdir@' top_builddir='@abs_top_builddir@' +# Populate a set of shell variables with a variable per feature +# This is used to implement a poor-man's hash map. +for feature in ${MAGICK_FEATURES} +do + eval MAGICK_FEATURE_${feature}=yes +done + set -a TOP_SRCDIR_NATIVE='@top_srcdir_native@' GM="${MEMCHECK} @abs_top_builddir@/utilities/gm" @@ -20,6 +27,13 @@ PATH="@abs_top_builddir@/utilities:${PATH}" +MIFF_COMPRESS=none +if [ "${MAGICK_FEATURE_BZLIB}" = "yes" ] ; then + MIFF_COMPRESS=bzip +elif [ "${MAGICK_FEATURE_ZLIB}" = "yes" ] ; then + MIFF_COMPRESS=zip +fi + # Number of bits in a pixel Quantum (8/16/32) QuantumDepth=@QuantumDepth@ @@ -39,13 +53,81 @@ if test -z "$MAGICK_LIMIT_DISK" ; then export MAGICK_LIMIT_DISK=0 fi +if test -z "$MAGICK_LIMIT_WRITE" ; then + # File write/read limits are based on checking output sizes of the + # largest files. This means that tests may fail if these files + # become larger. The two largest files are: + # + # utilities/tests/HaldClutIdentity_out.miff + # utilities/tests/montage_out.miff + printf "Evaluating MAGICK_LIMIT_WRITE, MIFF_COMPRESS=${MIFF_COMPRESS}\n" + case "${MIFF_COMPRESS}" in + none) + case ${QuantumDepth} in + 8) + MAGICK_LIMIT_WRITE=8.6MB + ;; + 16) + MAGICK_LIMIT_WRITE=18MB + ;; + 32) + MAGICK_LIMIT_WRITE=35MB + ;; + esac + ;; + rle) + case ${QuantumDepth} in + 8) + MAGICK_LIMIT_WRITE=12MB + ;; + 16) + MAGICK_LIMIT_WRITE=20MB + ;; + 32) + MAGICK_LIMIT_WRITE=38MB + ;; + esac + ;; + zip) + case ${QuantumDepth} in + 8) + MAGICK_LIMIT_WRITE=6.0MB + ;; + 16) + MAGICK_LIMIT_WRITE=7.3MB + ;; + 32) + MAGICK_LIMIT_WRITE=6.3MB + ;; + esac + ;; + bzip) + case ${QuantumDepth} in + 8) + MAGICK_LIMIT_WRITE=3.2MB + ;; + 16) + MAGICK_LIMIT_WRITE=4.6MB + ;; + 32) + MAGICK_LIMIT_WRITE=5.6MB + ;; + esac + ;; + esac + export MAGICK_LIMIT_WRITE + if test -z "$MAGICK_LIMIT_READ" ; then + export MAGICK_LIMIT_READ=$MAGICK_LIMIT_WRITE + fi +fi #if test -z "$MAGICK_LIMIT_READ" ; then -# export MAGICK_LIMIT_READ=800000 +# export MAGICK_LIMIT_READ=36MB #fi + # Enable debug traces for exceptions if test -z "MAGICK_DEBUG" ; then export MAGICK_DEBUG=exception fi -printf "Resource Limits: MAGICK_LIMIT_MEMORY=%s MAGICK_LIMIT_WIDTH=%s MAGICK_LIMIT_HEIGHT=%s MAGICK_LIMIT_DISK=%s\n\n" "$MAGICK_LIMIT_MEMORY" "$MAGICK_LIMIT_WIDTH" "$MAGICK_LIMIT_HEIGHT" "$MAGICK_LIMIT_DISK" +printf "Resource Limits: MAGICK_LIMIT_MEMORY=%s MAGICK_LIMIT_WIDTH=%s MAGICK_LIMIT_HEIGHT=%s MAGICK_LIMIT_DISK=%s MAGICK_LIMIT_READ=%s MAGICK_LIMIT_WRITE=%s\n\n" "$MAGICK_LIMIT_MEMORY" "$MAGICK_LIMIT_WIDTH" "$MAGICK_LIMIT_HEIGHT" "$MAGICK_LIMIT_DISK" "$MAGICK_LIMIT_READ" "$MAGICK_LIMIT_WRITE" set +a diff -r 26fce892769e -r 60f313f3728a fuzzing/utils.cc --- a/fuzzing/utils.cc Sat Jan 20 10:00:07 2024 -0600 +++ b/fuzzing/utils.cc Sun Jan 21 15:32:55 2024 -0600 @@ -23,6 +23,7 @@ MagickLib::SetMagickResourceLimit(MagickLib::HeightResource, 2048); MagickLib::SetMagickResourceLimit(MagickLib::DiskResource, 0); MagickLib::SetMagickResourceLimit(MagickLib::ReadResource, 900000); + MagickLib::SetMagickResourceLimit(MagickLib::WriteResource, 1118720); } }; diff -r 26fce892769e -r 60f313f3728a magick/blob.c --- a/magick/blob.c Sat Jan 20 10:00:07 2024 -0600 +++ b/magick/blob.c Sun Jan 21 15:32:55 2024 -0600 @@ -3550,7 +3550,12 @@ blob=image->blob; - if (blob->read_total >= blob->read_limit) + /* + EOF detection requires attempting to read beyond the file data so + use > rather than >=. Otherwise there will be failure if the read + limit is the same as the file size. + */ + if (blob->read_total > blob->read_limit) { blob->eof=1; ThrowException(&image->exception,ResourceLimitError,ReadLimitExceeded, diff -r 26fce892769e -r 60f313f3728a magick/version.h --- a/magick/version.h Sat Jan 20 10:00:07 2024 -0600 +++ b/magick/version.h Sun Jan 21 15:32:55 2024 -0600 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x272404 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 27,24,4 -#define MagickChangeDate "20240120" -#define MagickReleaseDate "snapshot-20240120" +#define MagickChangeDate "20240121" +#define MagickReleaseDate "snapshot-20240121" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 26fce892769e -r 60f313f3728a utilities/tests/common.sh --- a/utilities/tests/common.sh Sat Jan 20 10:00:07 2024 -0600 +++ b/utilities/tests/common.sh Sun Jan 21 15:32:55 2024 -0600 @@ -14,10 +14,3 @@ #CONVERT_FLAGS='-monitor' #COMPOSITE_FLAGS='-monitor' #MONTAGE_FLAGS='-monitor' - -MIFF_COMPRESS=none -if [ "${MAGICK_FEATURE_BZLIB}" = "yes" ] ; then - MIFF_COMPRESS=bzip -elif [ "${MAGICK_FEATURE_ZLIB}" = "yes" ] ; then - MIFF_COMPRESS=zip -fi diff -r 26fce892769e -r 60f313f3728a utilities/tests/hald-clut.tap --- a/utilities/tests/hald-clut.tap Sat Jan 20 10:00:07 2024 -0600 +++ b/utilities/tests/hald-clut.tap Sun Jan 21 15:32:55 2024 -0600 @@ -17,8 +17,8 @@ echo "Testing Hald CLUT identity level ${level} ..." identity_image=identity:${level} rm -f ${OUTFILE} - test_command_fn 'Hald CLUT identity' ${GM} convert ${CONVERT_FLAGS} ${identity_image} -hald-clut ${identity_image} -label Hald-Clut -compress ${MIFF_COMPRESS} ${OUTFILE} - test_command_fn 'Hald CLUT verify' ${GM} compare -maximum-error 1.5e-11 -metric MAE ${identity_image} -compress ${MIFF_COMPRESS} ${OUTFILE} + test_command_fn "Hald CLUT identity (level=${level})" ${GM} convert ${CONVERT_FLAGS} ${identity_image} -hald-clut ${identity_image} -label Hald-Clut -compress ${MIFF_COMPRESS} ${OUTFILE} + test_command_fn "Hald CLUT verify (level=${level})" ${GM} compare -maximum-error 1.5e-11 -metric MAE ${identity_image} -compress ${MIFF_COMPRESS} ${OUTFILE} echo done diff -r 26fce892769e -r 60f313f3728a www/Changelog.html --- a/www/Changelog.html Sat Jan 20 10:00:07 2024 -0600 +++ b/www/Changelog.html Sun Jan 21 15:32:55 2024 -0600 @@ -37,6 +37,19 @@ </div> <div class="document"> +<p>2024-01-21 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>utilities/tests/common.sh, common.shi.in: Apply tight read and +write file size limits during testing.</p></li> +<li><p>utilities/tests/hald-clut.tap (levels): Make messaging about +levels more distinct during Hald CLUT testing.</p></li> +<li><p>fuzzing/utils.cc: Set a write resource limit during oss-fuzz +testing.</p></li> +<li><p>magick/blob.c (ReadBlobByte): EOF detection requires reading +past the end of the file, so allow for that.</p></li> +</ul> +</blockquote> <p>2024-01-20 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">