From 61ed761414db6bdb56e3633b2bf3c82919f710ba Mon Sep 17 00:00:00 2001 From: Cristy Date: Sun, 5 Aug 2018 17:29:37 -0400 Subject: [PATCH] ... --- coders/xbm.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/coders/xbm.c b/coders/xbm.c index bae47c8e5..0cc82339f 100644 --- a/coders/xbm.c +++ b/coders/xbm.c @@ -180,6 +180,10 @@ static Image *ReadXBMImage(const ImageInfo *image_info,ExceptionInfo *exception) int c; + long + height, + width; + MagickBooleanType status; @@ -206,11 +210,9 @@ static Image *ReadXBMImage(const ImageInfo *image_info,ExceptionInfo *exception) bit, byte, bytes_per_line, - height, length, padding, - version, - width; + version; /* Open image file. @@ -236,17 +238,19 @@ static Image *ReadXBMImage(const ImageInfo *image_info,ExceptionInfo *exception) height=0; *name='\0'; while (ReadBlobString(image,buffer) != (char *) NULL) - if (sscanf(buffer,"#define %1024s %u",name,&width) == 2) + if (sscanf(buffer,"#define %1024s %ld",name,&width) == 2) if ((strlen(name) >= 6) && (LocaleCompare(name+strlen(name)-6,"_width") == 0)) break; while (ReadBlobString(image,buffer) != (char *) NULL) - if (sscanf(buffer,"#define %1024s %u",name,&height) == 2) + if (sscanf(buffer,"#define %1024s %ld",name,&height) == 2) if ((strlen(name) >= 7) && (LocaleCompare(name+strlen(name)-7,"_height") == 0)) break; - image->columns=width; - image->rows=height; + if ((width <= 0) || (height <= 0) || (EOFBlob(image) != MagickFalse)) + ThrowReaderException(CorruptImageError,"ImproperImageHeader"); + image->columns=(size_t) width; + image->rows=(size_t) height; image->depth=8; image->storage_class=PseudoClass; image->colors=2; @@ -274,9 +278,6 @@ static Image *ReadXBMImage(const ImageInfo *image_info,ExceptionInfo *exception) if (LocaleCompare("bits[]",(char *) p) == 0) break; } - if ((image->columns == 0) || (image->rows == 0) || - (EOFBlob(image) != MagickFalse)) - ThrowReaderException(CorruptImageError,"ImproperImageHeader"); /* Initialize image structure. */ -- 2.40.0