Norman Murray b65014a
--- ImageMagick/coders/dcm.c.orig	2007-04-03 18:27:57.000000000 +0200
Norman Murray b65014a
+++ ImageMagick/coders/dcm.c	2007-04-03 18:31:16.000000000 +0200
Norman Murray b65014a
@@ -2902,6 +2902,8 @@ static Image *ReadDCMImage(const ImageIn
Norman Murray b65014a
             {
Norman Murray b65014a
               data=(unsigned char *)
Norman Murray b65014a
                 AcquireMagickMemory((size_t) quantum*(length+1));
Norman Murray b65014a
+              if (length > ((~0UL)/quantum))
Norman Murray b65014a
+                ThrowReaderException(CorruptImageError,"ImproperImageHeader");
Norman Murray b65014a
               if (data == (unsigned char *) NULL)
Norman Murray b65014a
                 ThrowReaderException(ResourceLimitError,
Norman Murray b65014a
                   "MemoryAllocationFailed");
Norman Murray b65014a
--- ImageMagick/coders/xwd.c.orig	2007-04-03 19:21:18.000000000 +0200
Norman Murray b65014a
+++ ImageMagick/coders/xwd.c	2007-04-03 19:24:36.000000000 +0200
Norman Murray b65014a
@@ -236,7 +236,9 @@ static Image *ReadXWDImage(const ImageIn
Norman Murray b65014a
   if (header.header_size < sz_XWDheader)
Norman Murray b65014a
     ThrowReaderException(CorruptImageError,"CorruptImage");
Norman Murray b65014a
   length=(size_t) header.header_size-sz_XWDheader;
Norman Murray b65014a
-  comment=(char *) AcquireMagickMemory(length+MaxTextExtent);
Norman Murray b65014a
+  if (length > ((~0UL)/sizeof(*comment)))
Norman Murray b65014a
+    ThrowReaderException(CorruptImageError,"ImproperImageHeader");
Norman Murray b65014a
+  comment=(char *) AcquireMagickMemory((length+1)*sizeof(*comment));
Norman Murray b65014a
   if (comment == (char *) NULL)
Norman Murray b65014a
     ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
Norman Murray b65014a
   count=ReadBlob(image,length,(unsigned char *) comment);
Norman Murray b65014a
@@ -278,8 +281,10 @@ static Image *ReadXWDImage(const ImageIn
Norman Murray b65014a
       XWDColor
Norman Murray b65014a
         color;
Norman Murray b65014a
 
Norman Murray b65014a
-      colors=(XColor *)
Norman Murray b65014a
-        AcquireMagickMemory((size_t) header.ncolors*sizeof(*colors));
Norman Murray b65014a
+      length=(size_t) header.ncolors;
Norman Murray b65014a
+      if (length > ((~0UL)/sizeof(*colors)))
Norman Murray b65014a
+        ThrowReaderException(CorruptImageError,"ImproperImageHeader");
Norman Murray b65014a
+      colors=(XColor *) AcquireMagickMemory(length*sizeof(*colors));
Norman Murray b65014a
       if (colors == (XColor *) NULL)
Norman Murray b65014a
         ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
Norman Murray b65014a
       for (i=0; i < (long) header.ncolors; i++)