Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2019-10-18 11:48:22 +0300
committerMichael Niedermayer <michael@niedermayer.cc>2022-05-04 20:57:06 +0300
commitee981f7ceb2c20dbfc5a2f5f27b0c44032eac798 (patch)
tree1b9f51d85ea3c210057a54dfa9a202c349cd5434
parent02fd294a333baaa55501eb0a26b86c99a80e4569 (diff)
avfilter/vf_colorspace: fix memmory leaks
Fixes #8303 (cherry picked from commit fddef964e8aa4a2c123e470db1436a082ff6bcf3) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavfilter/vf_colorspace.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libavfilter/vf_colorspace.c b/libavfilter/vf_colorspace.c
index 71ea08a20f..dcac9f48f7 100644
--- a/libavfilter/vf_colorspace.c
+++ b/libavfilter/vf_colorspace.c
@@ -926,6 +926,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;
}
@@ -985,13 +986,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;
@@ -1005,8 +1011,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)));