]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/wmalosslessdec: Fix integer overflows in revert_inter_ch_decorr()
authorMichael Niedermayer <michael@niedermayer.cc>
Sun, 26 Apr 2020 19:19:13 +0000 (21:19 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Thu, 21 May 2020 07:31:08 +0000 (09:31 +0200)
Fixes: signed integer overflow: -717241856 + -1434459904 cannot be represented in type 'int'
Fixes: 21405/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-5677143666458624
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/wmalosslessdec.c

index c6c13fb417be21cecca8af57103e068faca322ac..7ef7c93dbdc4333fd55776569090997732633de6 100644 (file)
@@ -790,8 +790,8 @@ static void revert_inter_ch_decorr(WmallDecodeCtx *s, int tile_size)
     else if (s->is_channel_coded[0] || s->is_channel_coded[1]) {
         int icoef;
         for (icoef = 0; icoef < tile_size; icoef++) {
-            s->channel_residues[0][icoef] -= s->channel_residues[1][icoef] >> 1;
-            s->channel_residues[1][icoef] += s->channel_residues[0][icoef];
+            s->channel_residues[0][icoef] -= (unsigned)(s->channel_residues[1][icoef] >> 1);
+            s->channel_residues[1][icoef] += (unsigned) s->channel_residues[0][icoef];
         }
     }
 }