GraphicsMagick: Support and use XML predefined entities substiti...
GraphicsMagick Commits <[email protected]> Mon, 16 Dec 2024 10:51:20 -0600
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.41803.1734367894.7812.graphicsmagick-commit@lists.sourceforge.net> |
changeset cf7cd5ebabb0 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=cf7cd5ebabb0 summary: Support and use XML predefined entities substitions for '&' and '<' in delegates.mgk so the file syntax is valid XML. diffstat: ChangeLog | 13 +++++++++++++ VisualMagick/installer/inc/version.isx | 4 ++-- config/delegates.mgk.in | 22 +++++++++++++++++----- magick/delegate.c | 15 +++++++++++++++ magick/utility.c | 8 ++++++-- magick/version.h | 4 ++-- www/ChangeLog.html | 13 +++++++++++++ 7 files changed, 68 insertions(+), 11 deletions(-) diffs (165 lines): diff -r 766c366df86d -r cf7cd5ebabb0 ChangeLog --- a/ChangeLog Thu Dec 05 08:18:29 2024 -0600 +++ b/ChangeLog Mon Dec 16 10:50:23 2024 -0600 @@ -1,3 +1,16 @@ +2024-12-16 Bob Friesenhahn <[email protected]> + + * config/delegates.mgk.in: Use XML predefined entities + substitutions for '&' and '<' so that the file syntax is valid + XML. Older/existing files using "invalid" XML continue to be + accepted. + + * magick/delegate.c (ReadConfigureFile): Support XML predefined + entities substitutions. + + * magick/utility.c (SubstituteString): Fix off-by-one error which + caused back-to-back substitions to not work correctly. + 2024-12-05 Bob Friesenhahn <[email protected]> * fuzzing/oss-fuzz-build.sh: Remove duplicate request. diff -r 766c366df86d -r cf7cd5ebabb0 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Thu Dec 05 08:18:29 2024 -0600 +++ b/VisualMagick/installer/inc/version.isx Mon Dec 16 10:50:23 2024 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020241205" -#define public MagickPackageReleaseDate "snapshot-20241205" +#define public MagickPackageVersionAddendum ".020241216" +#define public MagickPackageReleaseDate "snapshot-20241216" diff -r 766c366df86d -r cf7cd5ebabb0 config/delegates.mgk.in --- a/config/delegates.mgk.in Thu Dec 05 08:18:29 2024 -0600 +++ b/config/delegates.mgk.in Mon Dec 16 10:50:23 2024 -0600 @@ -68,11 +68,23 @@ Use 'gm convert -list delegates' to verify how the contents of this file has been parsed. + In XML, characters '&', '<', and '>' have special meanings. See + "https://www.w3.org/TR/xml/#syntax". For example, '&' should be '&' + or the character reference '&'. XML supports the predefined entities + &, <, >, ', and ". The ampersand character (&) and + the left angle bracket (<) MUST NOT appear in their literal form in the + command definition text. GraphicsMagick after December 16, 2024 + introduces support for the predefined entities so that this file may be + expressed in valid XML, but the previous invalid syntax is still accepted. + --> <delegatemap> - <delegate decode="browse" stealth="True" command='"@BrowseDelegate@" "http://www.GraphicsMagick.org/" &' /> - <delegate decode="cgm" command='"@CGMDecodeDelegate@" -d ps < "%i" > "%o" 2>/dev/null' /> + <delegate decode="browse" stealth="True" command='"@BrowseDelegate@" "http://www.GraphicsMagick.org/" &' /> + <delegate decode="cgm" command='"@CGMDecodeDelegate@" -d ps < "%i" > "%o" 2>/dev/null' /> + <!-- The following recipe supports the original dcraw, which is no longer supported by Dave Coffin --> <delegate decode="dcraw" command='"@DCRAWDecodeDelegate@" -c -w @DcrawExtraOptions@ "%i" > "%o"' /> + <!-- The following recipe supports dcraw_emu from libraw. The critical -c option is used for something else! --> + <!-- <delegate decode="dcraw" command='"@DCRAWDecodeDelegate@" -Z - -w @DcrawExtraOptions@ "%i" > "%o"' /> --> <delegate decode="dot" command='"@DOTDecodeDelegate@" -Tps "%i" -o "%o"' /> <delegate decode="dvi" command='"@DVIDecodeDelegate@" -q -o "%o" "%i"' /> <delegate decode="edit" stealth="True" command='"@EditorDelegate@" -title "Edit Image Comment" -e vi "%o"' /> @@ -107,8 +119,8 @@ <!-- Read color PDF using Poppler's pdftoppm --> <delegate decode="poppler-color" stealth="True" command='"pdftoppm" "-freetype" "yes" "-rx" "-aa" "yes" "-aaVector" "yes" "72" "-ry" "72" "%s" ">" "%s"' /> - <delegate decode="hpg" command='"@HPGLDecodeDelegate@" -q -m eps -f `basename "%o"` "%i" && @MVDelegate@ -f `basename "%o"` "%o"' /> - <delegate decode="hpgl" command='"@HPGLDecodeDelegate@" -q -m eps -f `basename "%o"` "%i" && @MVDelegate@ -f `basename "%o"` "%o"' /> + <delegate decode="hpg" command='"@HPGLDecodeDelegate@" -q -m eps -f `basename "%o"` "%i" && @MVDelegate@ -f `basename "%o"` "%o"' /> + <delegate decode="hpgl" command='"@HPGLDecodeDelegate@" -q -m eps -f `basename "%o"` "%i" && @MVDelegate@ -f `basename "%o"` "%o"' /> <!-- Read HTML file --> <delegate decode="htm" command='"@HTMLDecodeDelegate@" -U -o "%o" "%i"' /> <!-- Read HTML file --> @@ -132,5 +144,5 @@ <delegate decode="ps" encode="print" mode="encode" command='"@PrintDelegate@" "%i"' /> <!-- Read HTML file --> <delegate decode="shtml" command='"@HTMLDecodeDelegate@" -U -o "%o" "%i"' /> - <delegate encode="show" stealth="True" command='"@GMDelegate@" display -immutable -delay 0 -window_group %g -title "%l of %f" "%o" &' /> + <delegate encode="show" stealth="True" command='"@GMDelegate@" display -immutable -delay 0 -window_group %g -title "%l of %f" "%o" &' /> </delegatemap> diff -r 766c366df86d -r cf7cd5ebabb0 magick/delegate.c --- a/magick/delegate.c Thu Dec 05 08:18:29 2024 -0600 +++ b/magick/delegate.c Mon Dec 16 10:50:23 2024 -0600 @@ -1417,6 +1417,21 @@ if (LocaleCompare((char *) keyword,"command") == 0) { delegate_list->commands=AllocateString(token); + /* + Support XML predefined entities substitutions. + + FIXME: Support XML character reference syntax and + provide more optimized support for XML predefined + entities substitutions. + */ + if (strchr(delegate_list->commands,'&') != (char *) NULL) + { + SubstituteString((char **) &delegate_list->commands,"<","<"); + SubstituteString((char **) &delegate_list->commands,">",">"); + SubstituteString((char **) &delegate_list->commands,"'","'"); + SubstituteString((char **) &delegate_list->commands,""","\""); + SubstituteString((char **) &delegate_list->commands,"&","&"); + } #if defined(MSWINDOWS) if (strchr(delegate_list->commands,'@') != (char *) NULL) { diff -r 766c366df86d -r cf7cd5ebabb0 magick/utility.c --- a/magick/utility.c Thu Dec 05 08:18:29 2024 -0600 +++ b/magick/utility.c Mon Dec 16 10:50:23 2024 -0600 @@ -5735,7 +5735,11 @@ if ((p[i] == search[0]) && (strncmp(&p[i],search,search_len) == 0)) { if (0 == replace_len) - replace_len=strlen(replace); + { + replace_len=strlen(replace); + if (replace_len == 0) + break; + } if (replace_len > search_len) { size_t @@ -5754,7 +5758,7 @@ (void) MagickCloneMemory(&p[i+replace_len],&p[i+search_len], strlen(&p[i+search_len])+1); (void) MagickCloneMemory(&p[i],replace,replace_len); - i += replace_len; + i += (replace_len-1); replaced=MagickTrue; } } diff -r 766c366df86d -r cf7cd5ebabb0 magick/version.h --- a/magick/version.h Thu Dec 05 08:18:29 2024 -0600 +++ b/magick/version.h Mon Dec 16 10:50:23 2024 -0600 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x282502 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 28,25,2 -#define MagickChangeDate "20241205" -#define MagickReleaseDate "snapshot-20241205" +#define MagickChangeDate "20241216" +#define MagickReleaseDate "snapshot-20241216" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r 766c366df86d -r cf7cd5ebabb0 www/ChangeLog.html --- a/www/ChangeLog.html Thu Dec 05 08:18:29 2024 -0600 +++ b/www/ChangeLog.html Mon Dec 16 10:50:23 2024 -0600 @@ -38,6 +38,19 @@ <main id="graphicsmagick-changelog"> <h1 class="title">GraphicsMagick ChangeLog</h1> +<p>2024-12-16 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>config/delegates.mgk.in: Use XML predefined entities +substitutions for '&' and '<' so that the file syntax is valid +XML. Older/existing files using "invalid" XML continue to be +accepted.</p></li> +<li><p>magick/delegate.c (ReadConfigureFile): Support XML predefined +entities substitutions.</p></li> +<li><p>magick/utility.c (SubstituteString): Fix off-by-one error which +caused back-to-back substitions to not work correctly.</p></li> +</ul> +</blockquote> <p>2024-12-05 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">