Hello,

Following discussion "exr : limit expected_len to tmp buffer size"

Patch in attach fix channel calc when there is uint32 channel and other
kind of channel (float or half).

Found by Andreas Cadhalpun


I will try to make a fate test for this.


Martin
From 374291fae7edd403c4f827e03348f69af3b737f1 Mon Sep 17 00:00:00 2001
From: Martin Vignali <martin.vign...@gmail.com>
Date: Wed, 16 Nov 2016 23:15:27 +0100
Subject: [PATCH] libavcodec/exr : fix channel size calculation for uint32
 channel

uint32 need 4 bytes not 1.
Fix decoding when there is half/float and uint32 channel.
---
 libavcodec/exr.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libavcodec/exr.c b/libavcodec/exr.c
index 51c17d6..f02337e 100644
--- a/libavcodec/exr.c
+++ b/libavcodec/exr.c
@@ -1448,7 +1448,11 @@ static int decode_header(EXRContext *s)
                 channel->xsub       = xsub;
                 channel->ysub       = ysub;
 
-                s->current_channel_offset += 1 << current_pixel_type;
+                if (current_pixel_type == EXR_HALF) {
+                    s->current_channel_offset += 2;
+                } else {/* Float or UINT32 */
+                    s->current_channel_offset += 4;
+                }
             }
 
             /* Check if all channels are set with an offset or if the channels
-- 
1.9.3 (Apple Git-50)

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to