From f0b8ef9f38367fb7d011195c0ec79f9cd18b5131 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 10 Apr 2006 16:09:03 +0000 Subject: [PATCH] gst/matroska/ebml-read.c: Don't try to modify read-only data. Original commit message from CVS: * gst/matroska/ebml-read.c: (gst_ebml_read_sint): Don't try to modify read-only data. * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_blockgroup_or_simpleblock): Fix comment (won't crash any longer now). --- ChangeLog | 9 +++++++++ gst/matroska/ebml-read.c | 7 ++++++- gst/matroska/matroska-demux.c | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 29ea9cd2c..4833d7667 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-04-10 Tim-Philipp Müller + + * gst/matroska/ebml-read.c: (gst_ebml_read_sint): + Don't try to modify read-only data. + + * gst/matroska/matroska-demux.c: + (gst_matroska_demux_parse_blockgroup_or_simpleblock): + Fix comment (won't crash any longer now). + 2006-04-10 Michael Smith * ext/annodex/gstcmmlenc.c: (gst_cmml_enc_set_header_on_caps): diff --git a/gst/matroska/ebml-read.c b/gst/matroska/ebml-read.c index fd4a48993..e9dbe5045 100644 --- a/gst/matroska/ebml-read.c +++ b/gst/matroska/ebml-read.c @@ -487,7 +487,6 @@ gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num) if (!gst_ebml_read_buffer (ebml, id, &buf)) return FALSE; - data = GST_BUFFER_DATA (buf); size = GST_BUFFER_SIZE (buf); if (size < 1 || size > 8) { GST_ELEMENT_ERROR (ebml, STREAM, DEMUX, (NULL), @@ -496,10 +495,16 @@ gst_ebml_read_sint (GstEbmlRead * ebml, guint32 * id, gint64 * num) gst_buffer_unref (buf); return FALSE; } + + buf = gst_buffer_make_writable (buf); + + data = GST_BUFFER_DATA (buf); + if (data[0] & 0x80) { negative = 1; data[0] &= ~0x80; } + *num = 0; while (n < size) { *num = (*num << 8) | data[n++]; diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index 15431369f..179ea9ae9 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -2274,7 +2274,7 @@ gst_matroska_demux_parse_blockgroup_or_simpleblock (GstMatroskaDemux * demux, } case GST_MATROSKA_ID_REFERENCEBLOCK:{ - /* FIXME: this segfaults + /* FIXME: implement support for ReferenceBlock gint64 num; if (!gst_ebml_read_sint (ebml, &id, &num)) { res = FALSE; -- 2.34.1