exr: check version too
authorPaul B Mahol <onemda@gmail.com>
Wed, 20 Feb 2013 10:32:22 +0000 (10:32 +0000)
committerPaul B Mahol <onemda@gmail.com>
Fri, 22 Feb 2013 18:59:54 +0000 (18:59 +0000)
Separate version from flags.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavcodec/exr.c

index 46f816a..53b8e5c 100644 (file)
@@ -236,7 +236,7 @@ static int decode_frame(AVCodecContext *avctx,
     AVFrame *const p = &s->picture;
     uint8_t *ptr;
 
-    int i, x, y, stride, magic_number, version_flag, ret;
+    int i, x, y, stride, magic_number, version, flags, ret;
     int w = 0;
     int h = 0;
     unsigned int xmin   = ~0;
@@ -271,8 +271,14 @@ static int decode_frame(AVCodecContext *avctx,
         return AVERROR_INVALIDDATA;
     }
 
-    version_flag = bytestream_get_le32(&buf);
-    if ((version_flag & 0x200) == 0x200) {
+    version = bytestream_get_byte(&buf);
+    if (version != 2) {
+        av_log(avctx, AV_LOG_ERROR, "Unsupported version %d\n", version);
+        return AVERROR_PATCHWELCOME;
+    }
+
+    flags = bytestream_get_le24(&buf);
+    if (flags & 0x2) {
         av_log(avctx, AV_LOG_ERROR, "Tile based images are not supported\n");
         return AVERROR_PATCHWELCOME;
     }