OSDN Git Service

Make avfilter_open() set to NULL the pads and the filters when the
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Mon, 12 Jan 2009 20:30:57 +0000 (20:30 +0000)
committerStefano Sabatini <stefano.sabatini-lala@poste.it>
Mon, 12 Jan 2009 20:30:57 +0000 (20:30 +0000)
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

index 283fd0a..ae424c4 100644 (file)
@@ -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;
 }