[FFmpeg-devel] [PATCH 6/8] avfilter/show_palette: fix memory leak

Clément Bœsch u at pkh.me
Fri Dec 4 17:34:46 CET 2015


On Fri, Dec 04, 2015 at 09:39:41AM -0500, Ganesh Ajjanagadde 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. Unfortunately, even leaving aside this subtle intermediate
> failure aspect, commit 8087632027d755cd32ccc9e91ea025e276197055 was only
> partially successful in addressing memleaks. Hopefully, this commit
> fixes the issue completely.
> 
> Tested with valgrind --leak-check=full --show-leak-kinds=all, and manual simulation
> of malloc/realloc failures.
> 
> Fixes: CID 1270818.
> 
> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
> ---
>  libavfilter/vf_showpalette.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/libavfilter/vf_showpalette.c b/libavfilter/vf_showpalette.c
> index fcb43a3..1614157 100644
> --- a/libavfilter/vf_showpalette.c
> +++ b/libavfilter/vf_showpalette.c
> @@ -50,14 +50,20 @@ static int query_formats(AVFilterContext *ctx)
>      AVFilterFormats *in  = ff_make_format_list(in_fmts);
>      AVFilterFormats *out = ff_make_format_list(out_fmts);
>      if (!in || !out) {
> -        av_freep(&in);
> -        av_freep(&out);
> -        return AVERROR(ENOMEM);
> +        ret = AVERROR(ENOMEM);
> +        goto fail;
>      }
> +
>      if ((ret = ff_formats_ref(in , &ctx->inputs[0]->out_formats)) < 0 ||
>          (ret = ff_formats_ref(out, &ctx->outputs[0]->in_formats)) < 0)
> -        return ret;
> +        goto fail;
>      return 0;
> +fail:

> +    av_freep(&in->formats);

what if in==NULL?

> +    av_freep(&in);

> +    av_freep(&out->formats);

ditto

> +    av_freep(&out);
> +    return ret;
>  }

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151204/cec358ae/attachment.sig>


More information about the ffmpeg-devel mailing list