mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/wavpack: clear remainder of data in case of error in wv_unpack_mono/stereo()
Fixes use of uninitialized data Fixes: msan_uninit-mem_7fd85b654950_4005_because.wv Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
911676c643
commit
866c44d4b0
|
@ -487,6 +487,13 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb,
|
|||
} while (!last && count < s->samples);
|
||||
|
||||
wv_reset_saved_context(s);
|
||||
|
||||
if (last && count < s->samples) {
|
||||
int size = av_get_bytes_per_sample(type);
|
||||
memset(dst_l + count*size, 0, (s->samples-count)*size);
|
||||
memset(dst_r + count*size, 0, (s->samples-count)*size);
|
||||
}
|
||||
|
||||
if ((s->avctx->err_recognition & AV_EF_CRCCHECK) &&
|
||||
wv_check_crc(s, crc, crc_extra_bits))
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
@ -548,6 +555,12 @@ static inline int wv_unpack_mono(WavpackFrameContext *s, GetBitContext *gb,
|
|||
} while (!last && count < s->samples);
|
||||
|
||||
wv_reset_saved_context(s);
|
||||
|
||||
if (last && count < s->samples) {
|
||||
int size = av_get_bytes_per_sample(type);
|
||||
memset(dst + count*size, 0, (s->samples-count)*size);
|
||||
}
|
||||
|
||||
if (s->avctx->err_recognition & AV_EF_CRCCHECK) {
|
||||
int ret = wv_check_crc(s, crc, crc_extra_bits);
|
||||
if (ret < 0 && s->avctx->err_recognition & AV_EF_EXPLODE)
|
||||
|
|
Loading…
Reference in New Issue