ImageMagick-7.0.9-4差分

ImageMagick-7.0.9-4差分

The latest release of ImageMagick is version 7.0.9-4

6 系同時リリースは ImageMagick-6.9.10-73

まとめ

気になる事
  • MagickCore/nt-base.h の strcasestr を削除して MagickCore/string-private.h に StringLocateSubstring を追加。(プラットフォーム共通化)
  • BMPTIFF のサイズチェックの強化

差分

ソースコード

  • MagickCore/color.c
    • strcasestr の代わりに StringLocateSubstring を使う。
68a69
> #include "MagickCore/string-private.h"
2145c2146
<             if (strcasestr(token,"SVG") != (char *) NULL)
---
>             if (StringLocateSubstring(token,"SVG") != (char *) NULL)
2147c2148
<             if (strcasestr(token,"X11") != (char *) NULL)
---
>             if (StringLocateSubstring(token,"X11") != (char *) NULL)
2149c2150
<             if (strcasestr(token,"XPM") != (char *) NULL)
---
>             if (StringLocateSubstring(token,"XPM") != (char *) NULL)
  • MagickCore/geometry.c
944a945,948
>       {
>         if (*(p+1) == ')')
>           return(flags);
>       }
  • MagickCore/nt-base.h
    • strcasestr の削除。(代わって StringLocateSubstring
332,365d331
< #if !defined(strcasestr)
< static inline char *strcasestr(const char *haystack,const char *needle)
< {
<   size_t
<     length_needle,
<     length_haystack;
<
<   register ssize_t
<     i;
<
<   if (!haystack || !needle)
<     return(NULL);
<   length_needle=strlen(needle);
<   length_haystack=strlen(haystack)-length_needle+1;
<   for (i=0; i < length_haystack; i++)
<   {
<     register size_t
<       j;
<
<     for (j=0; j < length_needle; j++)
<     {
<       unsigned char c1 = haystack[i+j];
<       unsigned char c2 = needle[j];
<       if (toupper(c1) != toupper(c2))
<         goto next;
<     }
<     return((char *) haystack+i);
<     next:
<      ;
<   }
<   return(NULL);
< }
< #endif
  • MagickCore/profile.c
    • strcasestr の代わりに StringLocateSubstring を使う。
65a66
> #include "MagickCore/string-private.h"
1742c1743
<   p=strcasestr((const char *) GetStringInfoDatum(profile),"x:xmpmeta");
---
>   p=StringLocateSubstring((const char *) GetStringInfoDatum(profile),"x:xmpmeta");
1744c1745
<     p=strcasestr((const char *) GetStringInfoDatum(profile),"rdf:RDF");
---
>     p=StringLocateSubstring((const char *) GetStringInfoDatum(profile),"rdf:RDF");
  • MagickCore/string-private.h
    • StringLocateSubstring の追加
47a48,86
> static inline char *StringLocateSubstring(const char *haystack,
>   const char *needle)
> {
> #if defined(MAGICKCORE_HAVE_STRCASESTR)
>   return((char *) strcasestr(haystack,needle));
> #else
>   {
>     size_t
>       length_needle,
>       length_haystack;
>
>     register ssize_t
>       i;
>
>     if (!haystack || !needle)
>       return(NULL);
>     length_needle=strlen(needle);
>     length_haystack=strlen(haystack)-length_needle+1;
>     for (i=0; i < length_haystack; i++)
>     {
>       register size_t
>         j;
>
>       for (j=0; j < length_needle; j++)
>       {
>         unsigned char c1 = haystack[i+j];
>         unsigned char c2 = needle[j];
>         if (toupper(c1) != toupper(c2))
>           goto next;
>       }
>       return((char *) haystack+i);
>       next:
>        ;
>     }
>     return((char *) NULL);
>   }
> #endif
> }
  • coders/bmp.c
    • ヘッダサイズチェックの強化
660,661d659
<         if (bmp_info.size < 40)
<           ThrowReaderException(CorruptImageError,"NonOS2HeaderSizeError");
666a665,666
>         if (bmp_info.size > 16)
>           {
672c672,673
<           ThrowReaderException(CorruptImageError,"InsufficientImageDataInFile");
---
>               ThrowReaderException(CorruptImageError,
>                 "InsufficientImageDataInFile");
673a675
>           }
  • coders/ps.c
    • strcasestr の代わりに StringLocateSubstring を使う。
75a76
> #include "MagickCore/string-private.h"
343,345c344,346
<         if ((strcasestr(p,"Cyan") != (char *) NULL) ||
<             (strcasestr(p,"Magenta") != (char *) NULL) ||
<             (strcasestr(p,"Yellow") != (char *) NULL))
---
>         if ((StringLocateSubstring(p,"Cyan") != (char *) NULL) ||
>             (StringLocateSubstring(p,"Magenta") != (char *) NULL) ||
>             (StringLocateSubstring(p,"Yellow") != (char *) NULL))
  • coders/tiff.c
    • サイズチェック強化
1831c1831
<     if (((MagickSizeType) TIFFScanlineSize(tiff)) > (2*GetBlobSize(image)))
---
>     if ((1.0*TIFFScanlineSize(tiff)) > (2.1*GetBlobSize(image)))

ChangeLog

(空っぽ)