View | Details | Raw Unified | Return to bug 5906
Collapse All | Expand All

(-)ImageMagick-6.0.4-orig/coders/psd.c (-9 / +8 lines)
Lines 508-513 Link Here
508
508
509
static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception)
509
static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception)
510
{
510
{
511
#define MaxPSDChannels  24
512
511
  typedef struct _ChannelInfo
513
  typedef struct _ChannelInfo
512
  {
514
  {
513
    short int
515
    short int
Lines 527-533 Link Here
527
      channels;
529
      channels;
528
530
529
    ChannelInfo
531
    ChannelInfo
530
      channel_info[24];
532
      channel_info[MaxPSDChannels];
531
533
532
    char
534
    char
533
      blendkey[4];
535
      blendkey[4];
Lines 656-679 Link Here
656
  count=ReadBlob(image,4,(unsigned char *) psd_info.signature);
658
  count=ReadBlob(image,4,(unsigned char *) psd_info.signature);
657
  psd_info.version=ReadBlobMSBShort(image);
659
  psd_info.version=ReadBlobMSBShort(image);
658
  if ((count == 0) || (LocaleNCompare(psd_info.signature,"8BPS",4) != 0) ||
660
  if ((count == 0) || (LocaleNCompare(psd_info.signature,"8BPS",4) != 0) ||
659
      (psd_info.version != 1)) {
661
      (psd_info.version != 1))
660
      if (image->debug != MagickFalse)
661
        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
662
          "  File signature was %.4s instead of '8BPS'",psd_info.signature);
663
    ThrowReaderException(CorruptImageError,"ImproperImageHeader");
662
    ThrowReaderException(CorruptImageError,"ImproperImageHeader");
664
  }
665
  (void) ReadBlob(image,6,psd_info.reserved);
663
  (void) ReadBlob(image,6,psd_info.reserved);
666
  psd_info.channels=ReadBlobMSBShort(image);
664
  psd_info.channels=ReadBlobMSBShort(image);
665
  if (psd_info.channels > MaxPSDChannels)
666
    ThrowReaderException(CorruptImageError,"MaximumChannelsExceeded");
667
  psd_info.rows=ReadBlobMSBLong(image);
667
  psd_info.rows=ReadBlobMSBLong(image);
668
  psd_info.columns=ReadBlobMSBLong(image);
668
  psd_info.columns=ReadBlobMSBLong(image);
669
  psd_info.depth=ReadBlobMSBShort(image);
669
  psd_info.depth=ReadBlobMSBShort(image);
670
  psd_info.mode=ReadBlobMSBShort(image);
670
  psd_info.mode=ReadBlobMSBShort(image);
671
672
  if (image->debug != MagickFalse)
671
  if (image->debug != MagickFalse)
673
    (void) LogMagickEvent(CoderEvent,GetMagickModule(),
672
    (void) LogMagickEvent(CoderEvent,GetMagickModule(),
674
      "  Image is %ld x %ld with channels=%d, depth=%d, mode=%s",
673
      "  Image is %ld x %ld with channels=%d, depth=%d, mode=%s",
675
      psd_info.columns, psd_info.rows, psd_info.channels,
674
      psd_info.columns,psd_info.rows,psd_info.channels,psd_info.depth,
676
      psd_info.depth, ModeToString((PSDImageType) psd_info.mode));
675
      ModeToString((PSDImageType) psd_info.mode));
677
  /*
676
  /*
678
    Initialize image.
677
    Initialize image.
679
  */
678
  */

Return to bug 5906