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. This fixes crashes due to pointer corruption caused by invalid writes. The problem was introduced in commit03152e74df
. Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> (cherry picked from commit52da3f6f70
) Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
This commit is contained in:
committed by
Andreas Cadhalpun
parent
c7d38efbc2
commit
08f26d99b5
@@ -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
|
||||
|
Reference in New Issue
Block a user