]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 1 Dec 2014 01:13:30 +0000 (01:13 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 1 Dec 2014 01:13:30 +0000 (01:13 +0000)
MagickCore/quantum.c
coders/palm.c
coders/psd.c

index a906aebacff7dd19c2123dd553e0471533400cbe..d2ccb971e1ef6a0c1f0165165823230218061c95 100644 (file)
@@ -645,8 +645,9 @@ MagickExport void SetQuantumAlphaType(QuantumInfo *quantum_info,
 MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
   QuantumInfo *quantum_info,const size_t depth)
 {
-  MagickBooleanType
-    status;
+  size_t
+    extent,
+    quantum;
 
   /*
     Allocate the quantum pixel buffer.
@@ -670,9 +671,11 @@ MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
     }
   if (quantum_info->pixels != (unsigned char **) NULL)
     DestroyQuantumPixels(quantum_info);
-  status=AcquireQuantumPixels(quantum_info,(MaxPixelChannels+quantum_info->pad)*
-    image->columns*((quantum_info->depth+7)/8));
-  return(status);
+  quantum=(quantum_info->pad+6)*(quantum_info->depth+7)/8;
+  extent=image->columns*quantum;
+  if (quantum != (extent/image->columns))
+    return(MagickFalse);
+  return(AcquireQuantumPixels(quantum_info,extent));
 }
 \f
 /*
index 8bcedd5edc56bf2d36d5af137e5729cacc80de32..0876352a24aa48c646642e7c8b6a91282ce4bd7e 100644 (file)
@@ -329,7 +329,7 @@ static Image *ReadPALMImage(const ImageInfo *image_info,
     bytes_per_row=ReadBlobMSBShort(image);
     flags=ReadBlobMSBShort(image);
     bits_per_pixel=(size_t) ReadBlobByte(image);
-    if (bits_per_pixel > 16)
+    if ((bits_per_pixel == 0) || (bits_per_pixel > 16))
       ThrowReaderException(CorruptImageError,"ImproperImageHeader");
     version=(size_t) ReadBlobByte(image);
     (void) version;
index 2188c9e80a115ce9646bbbc6d83a894b2e01fc1c..b8e3cc5034c144117416bb7d337b9abbb167d949 100644 (file)
@@ -1740,7 +1740,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info,
         (void) LogMagickEvent(CoderEvent,GetMagickModule(),
           "  reading image resource blocks - %.20g bytes",(double)
           ((MagickOffsetType) length));
-      blocks=(unsigned char *) AcquireQuantumMemory((size_t) length,
+      blocks=(unsigned char *) AcquireQuantumMemory((size_t) length+16,
         sizeof(*blocks));
       if (blocks == (unsigned char *) NULL)
         ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");