mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-06 16:10:09 +02:00
avfilter/vf_vpp_qsv: Fix leak of AVFilterFormats on error
The vpp_qsv's query_formats function allocated two AVFilterFormats, before storing them permanently. If storing the first of them fails, the function simply returns and the second leaks. This has been fixed by only allocating the second AVFilterFormats structure after the first one has been successfully stored. Fixes Coverity issue #1422231. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
6a65449954
commit
c4beb0783b
@ -489,7 +489,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref)
|
||||
static int query_formats(AVFilterContext *ctx)
|
||||
{
|
||||
int ret;
|
||||
AVFilterFormats *in_fmts, *out_fmts;
|
||||
static const enum AVPixelFormat in_pix_fmts[] = {
|
||||
AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_NV12,
|
||||
@ -505,16 +504,12 @@ static int query_formats(AVFilterContext *ctx)
|
||||
AV_PIX_FMT_NONE
|
||||
};
|
||||
|
||||
in_fmts = ff_make_format_list(in_pix_fmts);
|
||||
out_fmts = ff_make_format_list(out_pix_fmts);
|
||||
ret = ff_formats_ref(in_fmts, &ctx->inputs[0]->out_formats);
|
||||
ret = ff_formats_ref(ff_make_format_list(in_pix_fmts),
|
||||
&ctx->inputs[0]->out_formats);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = ff_formats_ref(out_fmts, &ctx->outputs[0]->in_formats);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
return ff_formats_ref(ff_make_format_list(out_pix_fmts),
|
||||
&ctx->outputs[0]->in_formats);
|
||||
}
|
||||
|
||||
static av_cold void vpp_uninit(AVFilterContext *ctx)
|
||||
|
Loading…
Reference in New Issue
Block a user