ext/faad/gstfaad.c (gst_faad_chain): Fix a bad format argument, and a potential int...
authorAndy Wingo <wingo@pobox.com>
Tue, 18 Mar 2008 10:12:40 +0000 (10:12 +0000)
committerAndy Wingo <wingo@pobox.com>
Tue, 18 Mar 2008 10:12:40 +0000 (10:12 +0000)
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.

ChangeLog
ext/faad/gstfaad.c
ext/faad/gstfaad.h

index 2a9b5aa4265140337737776b7c76f4524517143d..0242b945d5a3e1949a443aa3a8daa35c928ef29a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+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>
 
        * examples/switch/switcher.c:
index 1ddaf28f309eaafc3f7607a67f301d472ada07aa..0d48231038e0662cf81625127a0b6a636d1115fa 100644 (file)
@@ -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 */
       if (info.samples > 0) {
         guint bufsize = info.samples * faad->bps;
         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 */
         ret =
index 4297e9859ac696881f48ec979c862772f33964b2..7c20a01f4a19355cd02bb6461e97da1e2f2afd93 100644 (file)
 #define __GST_FAAD_H__
 
 #include <gst/gst.h>
+#ifdef FAAD_IS_NEAAC
+#include <neaacdec.h>
+#else
 #include <faad.h>
+#endif
 
 G_BEGIN_DECLS