[FFmpeg-devel] [PATCH 2/8] avfilter/vf_alphamerge: fix memory leaks

Ganesh Ajjanagadde gajjanagadde at gmail.com
Wed Dec 9 14:04:59 CET 2015


On Fri, Dec 4, 2015 at 9:39 AM, Ganesh Ajjanagadde
<gajjanagadde at gmail.com> wrote:
> Recent commits 6aaac24d72a7da631173209841a3944fcb4a3309 and
> 3835554bf8ed78539a3492c239f979c0ab03a15f made progress towards cleaning
> up usage of the formats API, and in particular fixed possible NULL pointer
> dereferences.
>
> This commit addresses the issue of possible resource leaks when some intermediate
> call fails.
>
> Tested with valgrind --leak-check=full --show-leak-kinds=all, and manual simulation
> of malloc/realloc failures.
>
> Fixes: CID 1338326, 1338329.
>
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
>  libavfilter/vf_alphamerge.c | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/libavfilter/vf_alphamerge.c b/libavfilter/vf_alphamerge.c
> index 8a1ca22..79568ba 100644
> --- a/libavfilter/vf_alphamerge.c
> +++ b/libavfilter/vf_alphamerge.c
> @@ -61,13 +61,21 @@ static int query_formats(AVFilterContext *ctx)
>      int ret;
>
>      if (!(main_formats = ff_make_format_list(main_fmts)) ||
> -        !(alpha_formats = ff_make_format_list(alpha_fmts)))
> -        return AVERROR(ENOMEM);
> +        !(alpha_formats = ff_make_format_list(alpha_fmts))) {
> +            ret = AVERROR(ENOMEM);
> +            goto fail;
> +        }
>      if ((ret = ff_formats_ref(main_formats , &ctx->inputs[0]->out_formats)) < 0 ||
>          (ret = ff_formats_ref(alpha_formats, &ctx->inputs[1]->out_formats)) < 0 ||
>          (ret = ff_formats_ref(main_formats , &ctx->outputs[0]->in_formats)) < 0)
> -        return ret;
> +            goto fail;
>      return 0;
> +fail:
> +    av_freep(&main_formats->formats);
> +    av_freep(&main_formats);
> +    av_freep(&alpha_formats->formats);
> +    av_freep(&alpha_formats);
> +    return ret;
>  }
>
>  static int config_input_main(AVFilterLink *inlink)
> --
> 2.6.3
>

pushed, with the necessary modification described by Clement


More information about the ffmpeg-devel mailing list