mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-22 08:17:01 +00:00
gst-libs/gst/riff/riff-read.c: fix infinite loop in wavparse, fixes bug
Original commit message from CVS: 2004-08-24 Sebastien Cote <sc5@hermes.usherb.ca> * gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head), (gst_riff_read_element_data), (gst_riff_read_seek), (gst_riff_read_skip): fix infinite loop in wavparse, fixes bug #144616, patch reviewed by Ronald and committed by Christophe Fergeau <teuf@gnome.org>
This commit is contained in:
parent
b57c33450e
commit
a2159103cb
2 changed files with 17 additions and 5 deletions
|
@ -1,3 +1,11 @@
|
|||
2004-08-24 Sebastien Cote <sc5@hermes.usherb.ca>
|
||||
|
||||
* gst-libs/gst/riff/riff-read.c: (gst_riff_peek_head),
|
||||
(gst_riff_read_element_data), (gst_riff_read_seek),
|
||||
(gst_riff_read_skip): fix infinite loop in wavparse, fixes bug
|
||||
#144616, patch reviewed by Ronald and committed by Christophe Fergeau
|
||||
<teuf@gnome.org>
|
||||
|
||||
2004-08-23 Iain <iaingnome@gmail.com>
|
||||
|
||||
* ext/mad/gstid3tag.c (gst_mad_id3_to_tag_list): Special case COMM
|
||||
|
|
|
@ -179,7 +179,7 @@ gst_riff_peek_head (GstRiffRead * riff,
|
|||
|
||||
/* Here, we might encounter EOS */
|
||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
||||
if (GST_IS_EVENT (event)) {
|
||||
if (event && GST_IS_EVENT (event)) {
|
||||
gboolean eos = (GST_EVENT_TYPE (event) == GST_EVENT_EOS);
|
||||
|
||||
gst_pad_event_default (riff->sinkpad, event);
|
||||
|
@ -220,7 +220,7 @@ gst_riff_read_element_data (GstRiffRead * riff, guint length, guint * got_bytes)
|
|||
guint32 remaining;
|
||||
|
||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
||||
if (GST_IS_EVENT (event)) {
|
||||
if (event && GST_IS_EVENT (event)) {
|
||||
gst_pad_event_default (riff->sinkpad, event);
|
||||
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
|
||||
|
||||
|
@ -276,8 +276,8 @@ gst_riff_read_seek (GstRiffRead * riff, guint64 offset)
|
|||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
||||
if (event) {
|
||||
g_warning ("Unexpected event before seek");
|
||||
gst_event_unref (event);
|
||||
}
|
||||
|
||||
if (remaining)
|
||||
gst_bytestream_flush_fast (riff->bs, remaining);
|
||||
|
||||
|
@ -376,9 +376,13 @@ gst_riff_read_skip (GstRiffRead * riff)
|
|||
|
||||
/* see if we have that much data available */
|
||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
||||
if (event) {
|
||||
if (event && GST_IS_EVENT (event)) {
|
||||
gboolean eos = (GST_EVENT_TYPE (event) == GST_EVENT_EOS);
|
||||
|
||||
g_warning ("Unexpected event in skip");
|
||||
gst_event_unref (event);
|
||||
gst_pad_event_default (riff->sinkpad, event);
|
||||
if (eos)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* yes */
|
||||
|
|
Loading…
Reference in a new issue