avidemux: ensure 0-padding when correcting dubious list size

This commit is contained in:
Mark Nauwelaerts 2011-05-18 12:52:31 +02:00
parent ee8aef2901
commit 4cd2dac1da

View file

@ -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);
}
}