X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fcngdec.c;h=1e884f3c33955d4e82ade487c1d9871f3f787cc4;hb=276f035a4d0f0cbd88c0b67d0358d3d121202c5a;hp=34f881448de86275fd88567df5a5ee52e2b7d95d;hpb=fc63d5ceb357c4b760cb02772de0b50d0557140f;p=ffmpeg diff --git a/libavcodec/cngdec.c b/libavcodec/cngdec.c index 34f881448de..1e884f3c339 100644 --- a/libavcodec/cngdec.c +++ b/libavcodec/cngdec.c @@ -23,6 +23,7 @@ #include "libavutil/common.h" #include "libavutil/ffmath.h" +#include "libavutil/intreadwrite.h" #include "avcodec.h" #include "celp_filters.h" #include "internal.h" @@ -120,6 +121,11 @@ static int cng_decode_frame(AVCodecContext *avctx, void *data, } } + if (avctx->internal->skip_samples > 10 * avctx->frame_size) { + avctx->internal->skip_samples = 0; + return AVERROR_INVALIDDATA; + } + if (p->inited) { p->energy = p->energy / 2 + p->target_energy / 2; for (i = 0; i < p->order; i++)