From 7618699ffdf07e19a14a15a124074938e8ba8848 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 10 Apr 2014 10:57:53 +0100 Subject: [PATCH] audiobasesink: avoid possible sample count overflow At 48 kHz, 2<<31 samples is reached before 13 hours so it sounds plausible this would be hit. Coverity 1139800, 1139801 --- gst-libs/gst/audio/gstaudiobasesink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gst-libs/gst/audio/gstaudiobasesink.c b/gst-libs/gst/audio/gstaudiobasesink.c index 42e98018e2..0e2884b5d5 100644 --- a/gst-libs/gst/audio/gstaudiobasesink.c +++ b/gst-libs/gst/audio/gstaudiobasesink.c @@ -1126,8 +1126,8 @@ wrong_state: static guint64 gst_audio_base_sink_get_offset (GstAudioBaseSink * sink) { - guint64 sample; - gint writeseg, segdone, sps; + guint64 sample, sps; + gint writeseg, segdone; gint diff; /* assume we can append to the previous sample */ @@ -1540,7 +1540,7 @@ gst_audio_base_sink_get_alignment (GstAudioBaseSink * sink, gint64 sample_diff; gint64 max_sample_diff; gint segdone = g_atomic_int_get (&ringbuf->segdone) - ringbuf->segbase; - gint64 samples_done = segdone * ringbuf->samples_per_seg; + gint64 samples_done = segdone * (gint64) ringbuf->samples_per_seg; gint64 headroom = sample_offset - samples_done; gboolean allow_align = TRUE; gboolean discont = FALSE;