diff options
author | Benjamin Otte <otte@gnome.org> | 2003-05-17 16:09:59 +0000 |
---|---|---|
committer | Benjamin Otte <otte@gnome.org> | 2003-05-17 16:09:59 +0000 |
commit | 8e3c67b6df520625e20d1faebd4c6015525aed0e (patch) | |
tree | 0434793ca05cb4b65c2862c16bf71a4f4af63605 /gst/wavparse/gstwavparse.c | |
parent | 01d4e568c663c5b229d1f26a07391492e3e9b032 (diff) |
make wavparse not segfault when somebody puts data at the end of the file
Original commit message from CVS:
make wavparse not segfault when somebody puts data at the end of the file
Diffstat (limited to 'gst/wavparse/gstwavparse.c')
-rw-r--r-- | gst/wavparse/gstwavparse.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 47884944..3dcfacf3 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -243,8 +243,10 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf) /* we can't go beyond the max length */ maxsize = wavparse->riff_nextlikely - GST_BUFFER_OFFSET (buf); - /* if we're expected to see a new chunk in this buffer */ - if (maxsize < size) { + if (maxsize == 0) { + return; + } else if (maxsize < size) { + /* if we're expected to see a new chunk in this buffer */ GstBuffer *newbuf; newbuf = gst_buffer_create_sub (buf, 0, maxsize); @@ -267,7 +269,7 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf) &GST_BUFFER_TIMESTAMP (buf)); if (wavparse->need_discont) { - if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) { + if (buf && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) { gst_pad_push (wavparse->srcpad, GST_BUFFER (gst_event_new_discontinuous (FALSE, GST_FORMAT_BYTES, wavparse->offset, @@ -282,9 +284,9 @@ gst_wavparse_chain (GstPad *pad, GstBuffer *buf) wavparse->need_discont = FALSE; } gst_pad_push (wavparse->srcpad, buf); - } - else + } else { gst_buffer_unref (buf); + } wavparse->offset += size; |