avfilter/af_loudnorm: fix crash when ebur128 initialization was not successfull/complete
authorPaul B Mahol <onemda@gmail.com>
Sat, 21 May 2016 17:22:00 +0000 (19:22 +0200)
committerPaul B Mahol <onemda@gmail.com>
Sat, 21 May 2016 17:23:04 +0000 (19:23 +0200)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavfilter/af_loudnorm.c

index cb210d4..9d27c16 100644 (file)
@@ -789,6 +789,9 @@ static av_cold void uninit(AVFilterContext *ctx)
     double i_in, i_out, lra_in, lra_out, thresh_in, thresh_out, tp_in, tp_out;
     int c;
 
+    if (!s->r128_in || !s->r128_out)
+        goto end;
+
     ebur128_loudness_range(s->r128_in, &lra_in);
     ebur128_loudness_global(s->r128_in, &i_in);
     ebur128_relative_threshold(s->r128_in, &thresh_in);
@@ -869,8 +872,11 @@ static av_cold void uninit(AVFilterContext *ctx)
         break;
     }
 
-    ebur128_destroy(&s->r128_in);
-    ebur128_destroy(&s->r128_out);
+end:
+    if (s->r128_in)
+        ebur128_destroy(&s->r128_in);
+    if (s->r128_out)
+        ebur128_destroy(&s->r128_out);
     av_freep(&s->limiter_buf);
     av_freep(&s->prev_smp);
     av_freep(&s->buf);