From 1563f074ff2e6cc3f3e2e218acfc112dc90ee288 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Mon, 4 Jul 2022 19:46:13 +0200 Subject: [PATCH] Added extra option to the skip spaces to the MagicInfo. --- MagickCore/magic.c | 11 +++++++++-- coders/coders-private.h | 7 +++++-- coders/svg.h | 8 ++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/MagickCore/magic.c b/MagickCore/magic.c index d91ede1b70..3a39dae4f4 100644 --- a/MagickCore/magic.c +++ b/MagickCore/magic.c @@ -80,6 +80,9 @@ typedef struct _MagicMapInfo const size_t length; + + const MagickBooleanType + skip_spaces; } MagicMapInfo; struct _MagicInfo @@ -96,6 +99,9 @@ struct _MagicInfo MagickOffsetType offset; + MagickBooleanType + skip_spaces; + size_t signature; }; @@ -214,6 +220,7 @@ static LinkedListInfo *AcquireMagicList(ExceptionInfo *exception) magic_info->offset=p->offset; magic_info->magic=(unsigned char *) p->magic; magic_info->length=p->length; + magic_info->skip_spaces=p->skip_spaces; magic_info->signature=MagickCoreSignature; status&=InsertValueInSortedLinkedList(list,CompareMagickInfoExtent, NULL,magic_info); @@ -291,7 +298,7 @@ MagickExport const MagicInfo *GetMagicInfo(const unsigned char *magic, p=(const MagicInfo *) GetNextValueInLinkedList(magic_cache); while (p != (const MagicInfo *) NULL) { - if (LocaleCompare(p->name,"SVG") == 0) + if (p->skip_spaces != MagickFalse) while (isspace(*magic) != 0) magic++; offset=p->offset+(MagickOffsetType) p->length; if ((offset <= (MagickOffsetType) length) && @@ -317,7 +324,7 @@ MagickExport const MagicInfo *GetMagicInfo(const unsigned char *magic, while (p != (const MagicInfo *) NULL) { assert(p->offset >= 0); - if (LocaleCompare(p->name,"SVG") == 0) + if (p->skip_spaces != MagickFalse) while (isspace(*magic) != 0) magic++; offset=p->offset+(MagickOffsetType) p->length; if ((offset <= (MagickOffsetType) length) && diff --git a/coders/coders-private.h b/coders/coders-private.h index 99d77b473d..8232757a8a 100644 --- a/coders/coders-private.h +++ b/coders/coders-private.h @@ -21,8 +21,11 @@ #include "MagickCore/property.h" #include "MagickCore/string_.h" -#define MagickCoderHeader(coder,offset,magic) { coder, offset, \ - (const unsigned char *) (magic), sizeof(magic)-1 }, +#define MagickCoderHeader(coder,offset,magic) \ + { coder, offset, (const unsigned char *) (magic), sizeof(magic)-1, MagickFalse }, + +#define MagickExtendedCoderHeader(coder,offset,magic,skip_spaces) \ + { coder, offset, (const unsigned char *) (magic), sizeof(magic)-1, skip_spaces }, #define MagickCoderAlias(coder,alias) { alias, coder }, diff --git a/coders/svg.h b/coders/svg.h index a33362e373..b8c2351505 100644 --- a/coders/svg.h +++ b/coders/svg.h @@ -17,10 +17,10 @@ #include "coders/coders-private.h" #define MagickSVGHeaders \ - MagickCoderHeader("SVG", 1, "?XML") \ - MagickCoderHeader("SVG", 1, "?xml") \ - MagickCoderHeader("SVG", 1, "SVG") \ - MagickCoderHeader("SVG", 1, "svg") + MagickExtendedCoderHeader("SVG", 1, "?XML", MagickTrue) \ + MagickExtendedCoderHeader("SVG", 1, "?xml", MagickTrue) \ + MagickExtendedCoderHeader("SVG", 1, "SVG", MagickTrue) \ + MagickExtendedCoderHeader("SVG", 1, "svg", MagickTrue) #define MagickSVGAliases \ MagickCoderAlias("SVG", "SVGZ") \