avcodec/wavpack: Check L/R values before use to avoid harmless integer overflow and undefined behavior in fate

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2015-05-03 15:54:21 +02:00
parent 52835cb8e1
commit 042260cde4
1 changed files with 8 additions and 0 deletions

View File

@ -472,6 +472,14 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb,
s->decorr[i].samplesB[0] = L; s->decorr[i].samplesB[0] = L;
} }
} }
if (type == AV_SAMPLE_FMT_S16P) {
if (FFABS(L) + FFABS(R) > (1<<19)) {
av_log(s->avctx, AV_LOG_ERROR, "sample %d %d too large\n", L, R);
return AVERROR_INVALIDDATA;
}
}
pos = (pos + 1) & 7; pos = (pos + 1) & 7;
if (s->joint) if (s->joint)
L += (R -= (L >> 1)); L += (R -= (L >> 1));