diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-12-18 19:36:59 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2004-12-18 19:36:59 +0000 |
commit | a4bf15581731ea75ce1ff5f156779580e685bff1 (patch) | |
tree | 493997cf777242c9745d886d3e6bcbe799eedb02 /gst/avi/gstavidemux.c | |
parent | 9d418cd3b9e0bd3ce25c6ec12e71af14122fbc92 (diff) |
gst/avi/gstavidemux.c: Work for truncated (unfinished download etc.) files. Fixes #160514.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_stream_index):
Work for truncated (unfinished download etc.) files. Fixes #160514.
Diffstat (limited to 'gst/avi/gstavidemux.c')
-rw-r--r-- | gst/avi/gstavidemux.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 367e4b32..83671772 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -1198,17 +1198,29 @@ gst_avi_demux_stream_index (GstAviDemux * avi, pos_before = gst_bytestream_tell (riff->bs); /* skip movi - * - * FIXME: - * - we want to add error handling here so we can recover. */ + if (pos_before + 8 > length) { + return TRUE; + } else { + guint8 *data; + + if (gst_bytestream_peek_bytes (riff->bs, &data, 8) == 8) { + guint len = GST_READ_UINT32_LE (&data[4]); + + if (pos_before + 8 + len >= length) { + GST_WARNING ("No index avail"); + return TRUE; + } + } + } + /* hmm... */ if (!gst_riff_read_skip (riff)) return FALSE; /* assure that we've got data left */ pos_after = gst_bytestream_tell (riff->bs); if (pos_after + 8 > length) { - g_warning ("File said that it has an index, but there is no index data!"); + GST_WARNING ("File said that it has an index, but there is no index data!"); goto end; } |