diff options
author | Paul B Mahol <onemda@gmail.com> | 2019-10-18 10:48:22 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2022-05-04 20:00:05 +0200 |
commit | 7d4c2d90b3997542a2dece32a1234f3bc3629610 (patch) | |
tree | 6c42aacbd9e4ad39413c2cec10f63ae7707a025d /libavfilter | |
parent | 3a04214c60949185c263ec76692c3b34d6232235 (diff) | |
download | ffmpeg-7d4c2d90b3997542a2dece32a1234f3bc3629610.tar.gz |
avfilter/vf_colorspace: fix memmory leaks
Fixes #8303
(cherry picked from commit fddef964e8aa4a2c123e470db1436a082ff6bcf3)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/vf_colorspace.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c index df6efffb3d..f651070adb 100644 --- a/libavfilter/vf_colorspace.c +++ b/libavfilter/vf_colorspace.c @@ -780,6 +780,7 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) res = av_frame_copy_props(out, in); if (res < 0) { av_frame_free(&in); + av_frame_free(&out); return res; } @@ -839,13 +840,18 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) !s->dither_scratch_base[1][0] || !s->dither_scratch_base[1][1] || !s->dither_scratch_base[2][0] || !s->dither_scratch_base[2][1]) { uninit(ctx); + av_frame_free(&in); + av_frame_free(&out); return AVERROR(ENOMEM); } s->rgb_sz = rgb_sz; } res = create_filtergraph(ctx, in, out); - if (res < 0) + if (res < 0) { + av_frame_free(&in); + av_frame_free(&out); return res; + } s->rgb_stride = rgb_stride / sizeof(int16_t); td.in = in; td.out = out; @@ -859,8 +865,11 @@ static int filter_frame(AVFilterLink *link, AVFrame *in) td.out_ss_h = av_pix_fmt_desc_get(out->format)->log2_chroma_h; if (s->yuv2yuv_passthrough) { res = av_frame_copy(out, in); - if (res < 0) + if (res < 0) { + av_frame_free(&in); + av_frame_free(&out); return res; + } } else { ctx->internal->execute(ctx, convert, &td, NULL, FFMIN((in->height + 1) >> 1, ff_filter_get_nb_threads(ctx))); |