From 4cd2dac1da66947834426d384f60831f20767f5d Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Wed, 18 May 2011 12:52:31 +0200 Subject: [PATCH] avidemux: ensure 0-padding when correcting dubious list size --- gst/avi/gstavidemux.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index e69c08c..5f2673b 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -1893,14 +1893,16 @@ gst_avi_demux_expose_streams (GstAviDemux * avi, gboolean force) static inline void gst_avi_demux_roundup_list (GstAviDemux * avi, GstBuffer ** buf) { - if (G_UNLIKELY (GST_BUFFER_SIZE (*buf) & 1)) { + gint size = GST_BUFFER_SIZE (*buf); + + if (G_UNLIKELY (size & 1)) { GstBuffer *obuf; - GST_DEBUG_OBJECT (avi, "rounding up dubious list size %d", - GST_BUFFER_SIZE (*buf)); - obuf = gst_buffer_new_and_alloc (GST_BUFFER_SIZE (*buf) + 1); - memcpy (GST_BUFFER_DATA (obuf), GST_BUFFER_DATA (*buf), - GST_BUFFER_SIZE (*buf)); + GST_DEBUG_OBJECT (avi, "rounding up dubious list size %d", size); + obuf = gst_buffer_new_and_alloc (size + 1); + memcpy (GST_BUFFER_DATA (obuf), GST_BUFFER_DATA (*buf), size); + /* assume 0 padding, at least makes outcome deterministic */ + (GST_BUFFER_DATA (obuf))[size] = 0; gst_buffer_replace (buf, obuf); } } -- 2.7.4