mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 12:10:37 +00:00
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
This commit is contained in:
parent
01d4e568c6
commit
8e3c67b6df
1 changed files with 7 additions and 5 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue