Browse Source

avcodec/vc1dsp: Avoid undefined shifts in vc1_v_s_overlap_c / vc1_h_s_overlap_c

Fixes: left shift of negative value -13
Fixes: 15260/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1_fuzzer-5702076048343040

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 507ca66ee4)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
tags/n3.2.15
Michael Niedermayer 6 years ago
parent
commit
2e01ce019f
1 changed files with 8 additions and 8 deletions
  1. +8
    -8
      libavcodec/vc1dsp.c

+ 8
- 8
libavcodec/vc1dsp.c View File

@@ -95,10 +95,10 @@ static void vc1_v_s_overlap_c(int16_t *top, int16_t *bottom)
d1 = a - d;
d2 = a - d + b - c;

top[48] = ((a << 3) - d1 + rnd1) >> 3;
top[56] = ((b << 3) - d2 + rnd2) >> 3;
bottom[0] = ((c << 3) + d2 + rnd1) >> 3;
bottom[8] = ((d << 3) + d1 + rnd2) >> 3;
top[48] = ((a * 8) - d1 + rnd1) >> 3;
top[56] = ((b * 8) - d2 + rnd2) >> 3;
bottom[0] = ((c * 8) + d2 + rnd1) >> 3;
bottom[8] = ((d * 8) + d1 + rnd2) >> 3;

bottom++;
top++;
@@ -121,10 +121,10 @@ static void vc1_h_s_overlap_c(int16_t *left, int16_t *right)
d1 = a - d;
d2 = a - d + b - c;

left[6] = ((a << 3) - d1 + rnd1) >> 3;
left[7] = ((b << 3) - d2 + rnd2) >> 3;
right[0] = ((c << 3) + d2 + rnd1) >> 3;
right[1] = ((d << 3) + d1 + rnd2) >> 3;
left[6] = ((a * 8) - d1 + rnd1) >> 3;
left[7] = ((b * 8) - d2 + rnd2) >> 3;
right[0] = ((c * 8) + d2 + rnd1) >> 3;
right[1] = ((d * 8) + d1 + rnd2) >> 3;

right += 8;
left += 8;


Loading…
Cancel
Save