Commit 603b409c authored by Andy Wingo Wingo's avatar Andy Wingo Wingo
Browse files

ext/faad/gstfaad.c (gst_faad_chain): Fix a bad format argument, and a potential int overflow.

Original commit message from CVS:
2008-03-18  Andy Wingo  <wingo@pobox.com>

* ext/faad/gstfaad.c (gst_faad_chain): Fix a bad format argument,
and a potential int overflow.

* ext/faad/gstfaad.h: Include <neaacdec.h> if faad is neaac.
Avoids a #warning about an ignored #pragma.
parent 03615558
2008-03-18 Andy Wingo <wingo@pobox.com>
* ext/faad/gstfaad.c (gst_faad_chain): Fix a bad format argument,
and a potential int overflow.
* ext/faad/gstfaad.h: Include <neaacdec.h> if faad is neaac.
Avoids a #warning about an ignored #pragma.
2008-03-17 Zaheer Abbas Merali <zaheerabbas at merali dot org> 2008-03-17 Zaheer Abbas Merali <zaheerabbas at merali dot org>
   
* examples/switch/switcher.c: * examples/switch/switcher.c:
......
...@@ -1337,12 +1337,20 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer) ...@@ -1337,12 +1337,20 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer)
} }
} }
if (info.samples > G_MAXUINT / faad->bps) {
/* C's lovely propensity for int overflow.. */
GST_ELEMENT_ERROR (faad, STREAM, DECODE, (NULL),
("Output buffer too large"));
ret = GST_FLOW_ERROR;
goto out;
}
/* play decoded data */ /* play decoded data */
if (info.samples > 0) { if (info.samples > 0) {
guint bufsize = info.samples * faad->bps; guint bufsize = info.samples * faad->bps;
guint num_samples = info.samples / faad->channels; guint num_samples = info.samples / faad->channels;
GST_DEBUG_OBJECT (faad, "decoded %d samples", info.samples); GST_DEBUG_OBJECT (faad, "decoded %d samples", (guint) info.samples);
/* note: info.samples is total samples, not per channel */ /* note: info.samples is total samples, not per channel */
ret = ret =
......
...@@ -21,7 +21,11 @@ ...@@ -21,7 +21,11 @@
#define __GST_FAAD_H__ #define __GST_FAAD_H__
#include <gst/gst.h> #include <gst/gst.h>
#ifdef FAAD_IS_NEAAC
#include <neaacdec.h>
#else
#include <faad.h> #include <faad.h>
#endif
G_BEGIN_DECLS G_BEGIN_DECLS
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment