ebml: don't modify out str if returning an error in _read_ascii

This is a regression from ASCII validation changes. Test case:
bug_s66876390_r0.001____malloc_printerr.webm
This commit is contained in:
Philip Jägenstedt 2010-05-13 09:18:56 +02:00 committed by Sebastian Dröge
parent c712d28796
commit 9c1267b1a9

View file

@ -802,28 +802,30 @@ gst_ebml_read_string (GstEbmlRead * ebml, guint32 * id, gchar ** str)
*/ */
GstFlowReturn GstFlowReturn
gst_ebml_read_ascii (GstEbmlRead * ebml, guint32 * id, gchar ** str) gst_ebml_read_ascii (GstEbmlRead * ebml, guint32 * id, gchar ** str_out)
{ {
GstFlowReturn ret; GstFlowReturn ret;
gchar *str;
gchar *iter; gchar *iter;
#ifndef GST_DISABLE_GST_DEBUG #ifndef GST_DISABLE_GST_DEBUG
guint64 oldoff = ebml->offset; guint64 oldoff = ebml->offset;
#endif #endif
ret = gst_ebml_read_string (ebml, id, str); ret = gst_ebml_read_string (ebml, id, &str);
if (ret != GST_FLOW_OK) if (ret != GST_FLOW_OK)
return ret; return ret;
for (iter = *str; *iter != '\0'; iter++) { for (iter = str; *iter != '\0'; iter++) {
if (G_UNLIKELY (*iter & 0x80)) { if (G_UNLIKELY (*iter & 0x80)) {
GST_ERROR_OBJECT (ebml, GST_ERROR_OBJECT (ebml,
"Invalid ASCII string at offset %" G_GUINT64_FORMAT, oldoff); "Invalid ASCII string at offset %" G_GUINT64_FORMAT, oldoff);
g_free (*str); g_free (str);
return GST_FLOW_ERROR; return GST_FLOW_ERROR;
} }
} }
*str_out = str;
return ret; return ret;
} }