diff --git a/gst/apetag/gstapedemux.c b/gst/apetag/gstapedemux.c index 0860f25386..accebee1f1 100644 --- a/gst/apetag/gstapedemux.c +++ b/gst/apetag/gstapedemux.c @@ -197,10 +197,16 @@ ape_demux_parse_tags (const guint8 * data, gint size) if (size - n < len) break; + /* If the tag is empty, skip to the next one */ + if (len == 0) + goto next_tag; + /* read */ tag = g_strndup ((gchar *) data + 8, n - 9); val = g_strndup ((gchar *) data + n, len); + GST_LOG ("tag [%s], val[%s]", tag, val); + /* special-case 'media' tag, could be e.g. "CD 1/2" */ if (g_ascii_strcasecmp (tag, "media") == 0) { gchar *sp, *sp2; @@ -314,6 +320,7 @@ ape_demux_parse_tags (const guint8 * data, gint size) g_free (val); /* move data pointer */ + next_tag: size -= len + n; data += len + n; }