From dc9cf44697c0a89d4a8b10118bcdadc912c01325 Mon Sep 17 00:00:00 2001 From: Vivia Nikolaidou Date: Mon, 14 Dec 2015 13:43:10 +0200 Subject: [PATCH] videoframe-audiolevel: Fix possible division by zero In update_rms_from_buffer(), division by "frames" wasn't checking whether "frames" is zero. CID 1341519. https://bugzilla.gnome.org/show_bug.cgi?id=759443 --- gst/videoframe_audiolevel/gstvideoframe-audiolevel.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c index 1260529afe..ade9966a95 100644 --- a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c +++ b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c @@ -495,9 +495,11 @@ update_rms_from_buffer (GstVideoFrameAudioLevel * self, GstBuffer * inbuf) g_value_init (&v, G_TYPE_DOUBLE); g_value_init (&va, G_TYPE_VALUE_ARRAY); for (i = 0; i < channels; i++) { - gdouble rms = sqrt (self->CS[i] / frames); - if (frames == 0 && self->CS[i] == 0) { + gdouble rms; + if (frames == 0 || self->CS[i] == 0) { rms = 0; /* empty buffer */ + } else { + rms = sqrt (self->CS[i] / frames); } self->CS[i] = 0.0; g_value_set_double (&v, rms);