avcodec/dfpwmdec: Check packet size more completely
Fixes: out of array access Fixes: 45497/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DFPWM_fuzzer-5239786212818944.fuzz Fixes: 45510/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DFPWM_fuzzer-4947856883056640 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
@@ -106,7 +106,10 @@ static int dfpwm_dec_frame(struct AVCodecContext *ctx, void *data,
|
|||||||
AVFrame *frame = data;
|
AVFrame *frame = data;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
frame->nb_samples = packet->size * 8 / ctx->ch_layout.nb_channels;
|
if (packet->size * 8LL % ctx->ch_layout.nb_channels)
|
||||||
|
return AVERROR_PATCHWELCOME;
|
||||||
|
|
||||||
|
frame->nb_samples = packet->size * 8LL / ctx->ch_layout.nb_channels;
|
||||||
if (frame->nb_samples <= 0) {
|
if (frame->nb_samples <= 0) {
|
||||||
av_log(ctx, AV_LOG_ERROR, "invalid number of samples in packet\n");
|
av_log(ctx, AV_LOG_ERROR, "invalid number of samples in packet\n");
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
|
Reference in New Issue
Block a user