On Fri, Dec 4, 2015 at 11:34 AM, Clément Bœsch <u...@pkh.me> wrote: > 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 <gajjanaga...@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; >> }
Fixed locally with an if(in) and similar checks. Also applies to other patches I sent. > > -- > Clément B. > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel