diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2015-05-31 14:55:12 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2015-05-31 15:03:31 +0200 |
commit | 42df71d9bbb1a5b4bce0bb34417692565c72d390 (patch) | |
tree | 7fa16983105504eb259bbfd703d9aeb28f052bd0 /libavcodec/ratecontrol.c | |
parent | 0994e142132200c706f704271b5a7ae81d128f5c (diff) | |
download | ffmpeg-42df71d9bbb1a5b4bce0bb34417692565c72d390.tar.gz |
ratecontrol: Check memory allocation
Diffstat (limited to 'libavcodec/ratecontrol.c')
-rw-r--r-- | libavcodec/ratecontrol.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index 620c854ad4..d0e13b9241 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -163,6 +163,8 @@ av_cold int ff_rate_control_init(MpegEncContext *s) return -1; rcc->entry = av_mallocz(i * sizeof(RateControlEntry)); rcc->num_entries = i; + if (!rcc->entry) + return AVERROR(ENOMEM); /* init all to skipped p frames * (with b frames we might have a not encoded frame at the end FIXME) */ @@ -210,8 +212,10 @@ av_cold int ff_rate_control_init(MpegEncContext *s) p = next; } - if (init_pass2(s) < 0) + if (init_pass2(s) < 0) { + ff_rate_control_uninit(s); return -1; + } // FIXME maybe move to end if ((s->avctx->flags & CODEC_FLAG_PASS2) && s->avctx->rc_strategy == FF_RC_STRATEGY_XVID) { @@ -932,6 +936,11 @@ static int init_pass2(MpegEncContext *s) qscale = av_malloc(sizeof(double) * rcc->num_entries); blurred_qscale = av_malloc(sizeof(double) * rcc->num_entries); + if (!qscale || !blurred_qscale) { + av_free(qscale); + av_free(blurred_qscale); + return AVERROR(ENOMEM); + } toobig = 0; for (step = 256 * 256; step > 0.0000001; step *= 0.5) { |