OSDN Git Service

libavfilter/af_join: avoid derreferencing possible null
authorReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Fri, 26 Sep 2014 15:52:09 +0000 (12:52 -0300)
committerReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Fri, 26 Sep 2014 21:42:39 +0000 (18:42 -0300)
ff_all_channel_layouts() might return null on alloc failure.

Fixes CID1241518

Signed-off-by: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
libavfilter/af_join.c

index 560c5c8..a1717c6 100644 (file)
@@ -248,9 +248,12 @@ static int join_query_formats(AVFilterContext *ctx)
     ff_add_channel_layout(&layouts, s->channel_layout);
     ff_channel_layouts_ref(layouts, &ctx->outputs[0]->in_channel_layouts);
 
-    for (i = 0; i < ctx->nb_inputs; i++)
-        ff_channel_layouts_ref(ff_all_channel_layouts(),
-                               &ctx->inputs[i]->out_channel_layouts);
+    for (i = 0; i < ctx->nb_inputs; i++) {
+        layouts = ff_all_channel_layouts();
+        if (!layouts)
+            return AVERROR(ENOMEM);
+        ff_channel_layouts_ref(layouts, &ctx->inputs[i]->out_channel_layouts);
+    }
 
     ff_set_common_formats    (ctx, ff_planar_sample_fmts());
     ff_set_common_samplerates(ctx, ff_all_samplerates());