From 689a5f493b62574b6e36cb1fd14d067b81847713 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Mon, 12 Jan 2009 20:30:57 +0000 Subject: [PATCH] Make avfilter_open() set to NULL the pads and the filters when the corresponding count is zero, rather than allocate a 16 bytes sized block for them. Improve safety. Originally committed as revision 16565 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavfilter/avfilter.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 283fd0aa4a..ae424c4735 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -341,7 +341,7 @@ AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name) if (!filter) return 0; - ret = av_malloc(sizeof(AVFilterContext)); + ret = av_mallocz(sizeof(AVFilterContext)); ret->av_class = &avfilter_class; ret->filter = filter; @@ -349,14 +349,18 @@ AVFilterContext *avfilter_open(AVFilter *filter, const char *inst_name) ret->priv = av_mallocz(filter->priv_size); ret->input_count = pad_count(filter->inputs); + if (ret->input_count) { ret->input_pads = av_malloc(sizeof(AVFilterPad) * ret->input_count); memcpy(ret->input_pads, filter->inputs, sizeof(AVFilterPad)*ret->input_count); ret->inputs = av_mallocz(sizeof(AVFilterLink*) * ret->input_count); + } ret->output_count = pad_count(filter->outputs); + if (ret->output_count) { ret->output_pads = av_malloc(sizeof(AVFilterPad) * ret->output_count); memcpy(ret->output_pads, filter->outputs, sizeof(AVFilterPad)*ret->output_count); ret->outputs = av_mallocz(sizeof(AVFilterLink*) * ret->output_count); + } return ret; }