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>
|
2004-08-23 Iain <iaingnome@gmail.com>
|
||||||
|
|
||||||
* ext/mad/gstid3tag.c (gst_mad_id3_to_tag_list): Special case COMM
|
* 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 */
|
/* Here, we might encounter EOS */
|
||||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
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);
|
gboolean eos = (GST_EVENT_TYPE (event) == GST_EVENT_EOS);
|
||||||
|
|
||||||
gst_pad_event_default (riff->sinkpad, event);
|
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;
|
guint32 remaining;
|
||||||
|
|
||||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
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);
|
gst_pad_event_default (riff->sinkpad, event);
|
||||||
if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
|
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);
|
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
||||||
if (event) {
|
if (event) {
|
||||||
g_warning ("Unexpected event before seek");
|
g_warning ("Unexpected event before seek");
|
||||||
gst_event_unref (event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remaining)
|
if (remaining)
|
||||||
gst_bytestream_flush_fast (riff->bs, 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 */
|
/* see if we have that much data available */
|
||||||
gst_bytestream_get_status (riff->bs, &remaining, &event);
|
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");
|
g_warning ("Unexpected event in skip");
|
||||||
gst_event_unref (event);
|
gst_pad_event_default (riff->sinkpad, event);
|
||||||
|
if (eos)
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* yes */
|
/* yes */
|
||||||
|
|
Loading…
Reference in a new issue