ImageMagick-6.9.8-1差分

ImageMagick-6.9.8-0差分 - yoyaのメモの続き

The latest release of ImageMagick is version 6.9.8-1

まとめ

  • security policy の namespace をサポート

コードを見る限り、domain="foo" name="baa" を name="foo:baa" とかけるようだけど。ちょっと意味がわからない。

差分

  • security policy の namespace をサポート
    • magick/policy.c
262c262,265
<     policyname[MaxTextExtent];
---
>     policyname[MagickPathExtent];
>
>   PolicyDomain
>     domain;
278c281
<     (void) CopyMagickString(policyname,name,MaxTextExtent);
---
>     (void) CopyMagickString(policyname,name,MagickPathExtent);
283c286
<     (void) CopyMagickString(q,q+1,MaxTextExtent);
---
>     (void) CopyMagickString(q,q+1,MagickPathExtent);
286a290,303
>     Strip domain from policy name (e.g. resource:map).
>   */
>   domain=UndefinedPolicyDomain;
>   for (q=policyname; *q != '\0'; q++)
>   {
>     if (*q != ':')
>       continue;
>     *q='\0';
>     domain=(PolicyDomain) ParseCommandOption(MagickPolicyDomainOptions,
>       MagickTrue,policyname);
>     (void) CopyMagickString(policyname,q+1,MagickPathExtent);
>     break;
>   }
>   /*
298a316
>     if ((domain == UndefinedPolicyDomain) || (p->domain == domain))
599c617,618
<           authorized=(p->rights & ReadPolicyRights) != 0;
---
>           authorized=(p->rights & ReadPolicyRights) != 0 ? MagickTrue :
>             MagickFalse;
601c620,621
<           authorized=(p->rights & WritePolicyRights) != 0;
---
>           authorized=(p->rights & WritePolicyRights) != 0 ? MagickTrue :
>             MagickFalse;
603c623,624
<           authorized=(p->rights & ExecutePolicyRights) != 0;
---
>           authorized=(p->rights & ExecutePolicyRights) != 0 ? MagickTrue :
>             MagickFalse;
    • magick/distribute-cache.c
206c206
<   shared_secret=GetPolicyValue("shared-secret");
---
>   shared_secret=GetPolicyValue("cache:shared-secret");
801c801
<   shared_secret=GetPolicyValue("shared-secret");
---
>   shared_secret=GetPolicyValue("cache:shared-secret");
    • magick/magick.c
1549c1549
<         limit=GetPolicyValue("precision");
---
>         limit=GetPolicyValue("system:precision");
    • magick/resource.c
438c438
<   value=GetPolicyValue("temporary-path");
---
>   value=GetPolicyValue("resource:temporary-path");
1296c1296
<       value=GetPolicyValue("width");
---
>       value=GetPolicyValue("resource:width");
1305c1305
<       value=GetPolicyValue("height");
---
>       value=GetPolicyValue("resource:height");
1314c1314
<       value=GetPolicyValue("area");
---
>       value=GetPolicyValue("resource:area");
1322c1322
<       value=GetPolicyValue("memory");
---
>       value=GetPolicyValue("resource:memory");
1331c1331
<       value=GetPolicyValue("map");
---
>       value=GetPolicyValue("resource:map");
1339c1339
<       value=GetPolicyValue("disk");
---
>       value=GetPolicyValue("resource:disk");
1347c1347
<       value=GetPolicyValue("file");
---
>       value=GetPolicyValue("resource:file");
1355c1355
<       value=GetPolicyValue("thread");
---
>       value=GetPolicyValue("resource:thread");
1369c1369
<       value=GetPolicyValue("throttle");
---
>       value=GetPolicyValue("resource:throttle");
1378c1378
<       value=GetPolicyValue("time");
---
>       value=GetPolicyValue("resource:time");
1380c1380
<         resource_info.time_limit=MagickMax(limit,StringToSizeType(value,100.0));
---
>         resource_info.time_limit=MagickMin(limit,StringToSizeType(value,100.0));
    • magick/utility.c
1810c1810
<   passes=GetPolicyValue("shred");
---
>   passes=GetPolicyValue("system:shred");
ChangeLogにない差分
  • PerlMagick/quantum/quantum.xs
    • info->image_info->filename 参照前に NULL チェック
    • attribute channel がないと alpha なしで処理してたので、修正
4868,4870d4867
<               if (info && info->image_info->filename &&
<                   *info->image_info->filename)
<                 s=newSVpv(info->image_info->filename,0);
4872a4870,4872
>               else
>                 if (info && *info->image_info->filename)
>                   s=newSVpv(info->image_info->filename,0);
PerlMagick/quantum/quantum.xs.in
4868,4870d4867
<               if (info && info->image_info->filename &&
<                   *info->image_info->filename)
<                 s=newSVpv(info->image_info->filename,0);
4872a4870,4872
>               else
>                 if (info && *info->image_info->filename)
>                   s=newSVpv(info->image_info->filename,0);
13701a13702,13703
>     if (image->matte != MagickFalse)
>       channel|=OpacityChannel;
  • coders/jp2.c
    • ssize_t を size_t に。
820,821c820,821
<     if (((ssize_t) (1 << (i+2)) > image->columns) &&
<         ((ssize_t) (1 << (i+2)) > image->rows))
---
>     if (((size_t) (1 << (i+2)) > image->columns) &&
>         ((size_t) (1 << (i+2)) > image->rows))
  • coders/pgx.c
    • 書き込みに失敗した時点で中断させる
380c380
      count=WriteBlob(image,length,pixels);
      if (count != (ssize_t) length)
<       ThrowWriterException(CorruptImageError,"UnableToWriteImageData");
---
>       break;
  • coders/png.c
    • 数値の型合わせ
1864c1864
<       for (i=0; i<chunk->size; i++)
---
>       for (i=0; i < (ssize_t) chunk->size; i++)
  • tiff.c
    • size_t キャスト
1617c1617
<       TIFFScanlineSize(tiff),(size_t) (image->columns*samples_per_pixel*
---
>       TIFFScanlineSize(tiff),(image->columns*samples_per_pixel*
||M<
- magick/cache.c
--  MAGICK_SYNCHRONIZE を cache_info-syncronize に収納した
>|c|
338c338
<     *synchronize;
---
>     *value;
360,361c360,367
<   synchronize=GetEnvironmentValue("MAGICK_SYNCHRONIZE");
<   if (synchronize != (const char *) NULL)
---
>   value=GetEnvironmentValue("MAGICK_SYNCHRONIZE");
>   if (value != (const char *) NULL)
>     {
>       cache_info->synchronize=IsStringTrue(value);
>       value=DestroyString(value);
>     }
>   value=GetPolicyValue("cache:synchronize");
>   if (value != (const char *) NULL)
363,364c369,370
<       cache_info->synchronize=IsStringTrue(synchronize);
<       synchronize=DestroyString(synchronize);
---
>       cache_info->synchronize=IsStringTrue(value);
>       value=DestroyString(value);
3834a3841,3842
>       if (value == (char *) NULL)
>         value=GetPolicyValue("cache:memory-map");
  • magick/compare.c
<   if (((channel & OpacityChannel) != 0) && ((image->matte != MagickFalse) ||
<       (reconstruct_image->matte != MagickFalse)))
<     distortion[CompositeChannels]/=(double)
<       (GetNumberChannels(image,channel)-1);
<   else
  • identify.c
    • PrintChannelStatistics 第3引数で指定する文字列に "Overall" 追加。
    • (AlphaChannel に巻き込ませてる。QuantumRange から引いて逆数をとってるけど何だろう?)
458c458
<   if (channel == AlphaChannel)
---
>   if ((channel == AlphaChannel) || (LocaleCompare(name,"Overall") == 0))
  • magick/property.c
    • namespace を xmp_namespace に改名。(security policy namespace とごっちゃにならないよう?)
1743c1743
<             *namespace;
---
>             *xmp_namespace;
1750,1751c1750,1751
<               namespace=ConstantString(GetXMLTreeTag(node));
<               (void) SubstituteString(&namespace,"exif:","xmp:");
---
>               xmp_namespace=ConstantString(GetXMLTreeTag(node));
>               (void) SubstituteString(&xmp_namespace,"exif:","xmp:");
1753c1753
<                 namespace,ConstantString(content));
---
>                 xmp_namespace,ConstantString(content));
1760,1761c1760,1761
<                 namespace=ConstantString(GetXMLTreeTag(node));
<                 (void) SubstituteString(&namespace,"exif:","xmp:");
---
>                 xmp_namespace=ConstantString(GetXMLTreeTag(node));
>                 (void) SubstituteString(&xmp_namespace,"exif:","xmp:");
1763c1763
<                   namespace,ConstantString(content));
---
>                   xmp_namespace,ConstantString(content));
  • magick/statistic.c
1537,1539c1536
<         channel_statistics[RedChannel].variance-
<         channel_statistics[RedChannel].mean*
<         channel_statistics[RedChannel].mean;
---
>         channel_statistics[RedChannel].standard_deviation;

ChangeLog

2017-03-14  6.9.8-1 Cristy  <quetzlzacatenango@image...>
  * Support namespaces for the security policy.