41 lines
1.5 KiB
Diff
41 lines
1.5 KiB
Diff
--- coders/dcm.c
|
|
+++ coders/dcm.c
|
|
@@ -2950,7 +2950,7 @@
|
|
/*
|
|
Photometric interpretation.
|
|
*/
|
|
- for (i=0; i < (long) length; i++)
|
|
+ for (i=0; i < (long) Min(length, MaxTextExtent-1); i++)
|
|
photometric[i]=(char) data[i];
|
|
photometric[i]='\0';
|
|
break;
|
|
--- coders/palm.c
|
|
+++ coders/palm.c
|
|
@@ -398,7 +398,7 @@
|
|
image->compression=RLECompression;
|
|
for (i=0; i < (long) bytes_per_row; )
|
|
{
|
|
- count=ReadBlobByte(image);
|
|
+ count=Min(ReadBlobByte(image), bytes_per_row-i);
|
|
byte=ReadBlobByte(image);
|
|
(void) ResetMagickMemory(one_row+i,(int) byte,count);
|
|
i+=count;
|
|
@@ -431,6 +431,8 @@
|
|
indexes=GetIndexes(image);
|
|
if (bits_per_pixel == 16)
|
|
{
|
|
+ if (image->columns > 2*bytes_per_row)
|
|
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
|
|
for (x=0; x < (long) image->columns; x++)
|
|
{
|
|
color16=(*ptr++ << 8);
|
|
@@ -447,6 +449,8 @@
|
|
bit=8-bits_per_pixel;
|
|
for (x=0; x < (long) image->columns; x++)
|
|
{
|
|
+ if (ptr - one_row >= bytes_per_row)
|
|
+ ThrowReaderException(CorruptImageError,"ImproperImageHeader");
|
|
index=(IndexPacket) (mask-(((*ptr) & (mask << bit)) >> bit));
|
|
indexes[x]=index;
|
|
*q++=image->colormap[index];
|