On Fri, Dec 4, 2015 at 9:39 AM, Ganesh Ajjanagadde <gajjanaga...@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 1250334. > > Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> > --- > libavfilter/af_amix.c | 28 +++++++++++++++------------- > 1 file changed, 15 insertions(+), 13 deletions(-) > > diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c > index 223328b..a182ec7 100644 > --- a/libavfilter/af_amix.c > +++ b/libavfilter/af_amix.c > @@ -519,20 +519,22 @@ static int query_formats(AVFilterContext *ctx) > int ret; > > layouts = ff_all_channel_layouts(); > - if (!layouts) > - return AVERROR(ENOMEM); > + if (!layouts) { > + ret = AVERROR(ENOMEM); > + goto fail; > + } > > - if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT)) < 0) > - return ret; > - if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP)) < 0) > - return ret; > - ret = ff_set_common_formats(ctx, formats); > - if (ret < 0) > - return ret; > - ret = ff_set_common_channel_layouts(ctx, layouts); > - if (ret < 0) > - return ret; > - return ff_set_common_samplerates(ctx, ff_all_samplerates()); > + if ((ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLT )) < 0 || > + (ret = ff_add_format(&formats, AV_SAMPLE_FMT_FLTP)) < 0 || > + (ret = ff_set_common_formats (ctx, formats)) < 0 || > + (ret = ff_set_common_channel_layouts(ctx, layouts)) < 0 || > + (ret = ff_set_common_samplerates(ctx, ff_all_samplerates())) < 0) > + goto fail; > + return 0; > +fail: > + av_freep(&layouts->channel_layouts); > + av_freep(&layouts); > + return ret; > } > > static const AVFilterPad avfilter_af_amix_outputs[] = { > -- > 2.6.3 >
pushed, with the neccessary modification described by Clement _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel