mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
ext/faad/gstfaad.c: Don't crash on small buffers.
Original commit message from CVS: * ext/faad/gstfaad.c: (gst_faad_setcaps), (gst_faad_sync): Don't crash on small buffers.
This commit is contained in:
parent
a93b6e28ca
commit
a80f168832
2 changed files with 18 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2006-07-16 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* ext/faad/gstfaad.c: (gst_faad_setcaps), (gst_faad_sync):
|
||||||
|
Don't crash on small buffers.
|
||||||
|
|
||||||
2006-07-15 Stefan Kost <ensonic@users.sf.net>
|
2006-07-15 Stefan Kost <ensonic@users.sf.net>
|
||||||
|
|
||||||
* ext/ivorbis/vorbisfile.c: (gst_ivorbisfile_sink_activate):
|
* ext/ivorbis/vorbisfile.c: (gst_ivorbisfile_sink_activate):
|
||||||
|
|
|
@ -299,10 +299,8 @@ gst_faad_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
/* someone forgot that char can be unsigned when writing the API */
|
/* someone forgot that char can be unsigned when writing the API */
|
||||||
if ((gint8) faacDecInit2 (faad->handle,
|
if ((gint8) faacDecInit2 (faad->handle,
|
||||||
GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf), &samplerate,
|
GST_BUFFER_DATA (buf), GST_BUFFER_SIZE (buf), &samplerate,
|
||||||
&channels) < 0) {
|
&channels) < 0)
|
||||||
GST_DEBUG ("faacDecInit2() failed");
|
goto init_failed;
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (faad, "channels=%u, rate=%u", channels, samplerate);
|
GST_DEBUG_OBJECT (faad, "channels=%u, rate=%u", channels, samplerate);
|
||||||
|
|
||||||
|
@ -351,6 +349,13 @@ gst_faad_setcaps (GstPad * pad, GstCaps * caps)
|
||||||
gst_faad_send_tags (faad);
|
gst_faad_send_tags (faad);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* ERRORS */
|
||||||
|
init_failed:
|
||||||
|
{
|
||||||
|
GST_DEBUG_OBJECT (faad, "faacDecInit2() failed");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1033,6 +1038,10 @@ gst_faad_sync (GstBuffer * buf, guint * off)
|
||||||
|
|
||||||
GST_DEBUG ("Finding syncpoint");
|
GST_DEBUG ("Finding syncpoint");
|
||||||
|
|
||||||
|
/* check for too small a buffer */
|
||||||
|
if (size < 3)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
/* FIXME: for no-sync, we go over the same data for every new buffer.
|
/* FIXME: for no-sync, we go over the same data for every new buffer.
|
||||||
* We should save the information somewhere. */
|
* We should save the information somewhere. */
|
||||||
for (n = 0; n < size - 3; n++) {
|
for (n = 0; n < size - 3; n++) {
|
||||||
|
|
Loading…
Reference in a new issue