From b6696122a0abf15c0d416ee9d069be7b369dd0ec Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 7 Jan 2016 18:10:49 +0200 Subject: [PATCH] mxftypes: Don't store pointers in stack allocated guints This works usually in this place, unless the compiler optimizes things in interesting ways in which case it causes stack corruption and crashes later. The compiler in question here is clang with -O1, which seems to pack the stack a bit more and causes writing to the guint as pointer to overwrite map.memory, which then later crashes during unmapping of the memory. --- gst/mxf/mxftypes.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gst/mxf/mxftypes.c b/gst/mxf/mxftypes.c index ab04427..a2af02e 100644 --- a/gst/mxf/mxftypes.c +++ b/gst/mxf/mxftypes.c @@ -1585,15 +1585,14 @@ mxf_primer_pack_to_buffer (const MXFPrimerPack * pack) data += 8; if (pack->mappings) { - guint local_tag; + gpointer local_tag; MXFUL *ul; GHashTableIter iter; g_hash_table_iter_init (&iter, pack->mappings); - while (g_hash_table_iter_next (&iter, (gpointer) & local_tag, - (gpointer) & ul)) { - GST_WRITE_UINT16_BE (data, local_tag); + while (g_hash_table_iter_next (&iter, &local_tag, (gpointer) & ul)) { + GST_WRITE_UINT16_BE (data, GPOINTER_TO_UINT (local_tag)); memcpy (data + 2, ul, 16); data += 18; } -- 2.7.4