From 7f00b64e77b08d288479b8b479c386f50307495c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 7 Jan 2016 18:10:49 +0200 Subject: 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 55ac8be0b..d857efe88 100644 --- a/gst/mxf/mxftypes.c +++ b/gst/mxf/mxftypes.c @@ -1474,15 +1474,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; } -- cgit v1.2.1