]> granicus.if.org Git - imagemagick/commitdiff
Fixed possible undefined shift (https://bugs.chromium.org/p/oss-fuzz/issues/detail...
authorDirk Lemstra <dirk@git.imagemagick.org>
Mon, 5 Mar 2018 20:59:16 +0000 (21:59 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Mon, 5 Mar 2018 20:59:16 +0000 (21:59 +0100)
coders/dcm.c

index 00d7304854161ba0be292979df513884a7ccb101..7de8e5f65c3ba1839c7d68e50d911bf6ccffc38c 100644 (file)
@@ -2776,7 +2776,8 @@ static int ReadDCMByte(DCMStreamInfo *stream_info,Image *image)
 static unsigned short ReadDCMShort(DCMStreamInfo *stream_info,Image *image)
 {
   int
-    shift;
+    shift,
+    val;
 
   unsigned short
     value;
@@ -2784,8 +2785,11 @@ static unsigned short ReadDCMShort(DCMStreamInfo *stream_info,Image *image)
   if (image->compression != RLECompression)
     return(ReadBlobLSBShort(image));
   shift=image->depth < 16 ? 4 : 8;
-  value=ReadDCMByte(stream_info,image) | (unsigned short)
-    (ReadDCMByte(stream_info,image) << shift);
+  value=ReadDCMByte(stream_info,image);
+  val=ReadDCMByte(stream_info,image);
+  if (val < 0)
+    return(0);
+  value|=(unsigned short)(val << shift);
   return(value);
 }