[FFmpeg-devel,1/3] avcodec/xsubdec: fix overflow in alpha handling

Submitted by Michael Niedermayer on Oct. 23, 2019, 10:54 p.m.

Details

Message ID 20191023225427.2572-1-michael@niedermayer.cc
State Accepted
Commit 9ea997395909907f569787d4ba5b96352ad31a80
Headers show

Commit Message

Michael Niedermayer Oct. 23, 2019, 10:54 p.m.
Fixes: left shift of 255 by 24 places cannot be represented in type 'int'
Fixes: 18368/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_XSUB_fuzzer-5702665442426880

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/xsubdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Niedermayer Nov. 9, 2019, 4:29 p.m.
On Thu, Oct 24, 2019 at 12:54:25AM +0200, Michael Niedermayer wrote:
> Fixes: left shift of 255 by 24 places cannot be represented in type 'int'
> Fixes: 18368/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_XSUB_fuzzer-5702665442426880
> 
> Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
> ---
>  libavcodec/xsubdec.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

will apply patchset

[...]

Patch hide | download patch | download mbox

diff --git a/libavcodec/xsubdec.c b/libavcodec/xsubdec.c
index 93fd0f4d50..05c4a64ee5 100644
--- a/libavcodec/xsubdec.c
+++ b/libavcodec/xsubdec.c
@@ -130,7 +130,7 @@  static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
             ((uint32_t *)sub->rects[0]->data[1])[i] |= 0xff000000;
     } else {
         for (i = 0; i < sub->rects[0]->nb_colors; i++)
-            ((uint32_t *)sub->rects[0]->data[1])[i] |= *buf++ << 24;
+            ((uint32_t *)sub->rects[0]->data[1])[i] |= (unsigned)*buf++ << 24;
     }
 
 #if FF_API_AVPICTURE