gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/swf/tag_loaders.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/swf/tag_loaders.cpp
Date: Mon, 03 Dec 2007 11:34:08 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/12/03 11:34:08

Modified files:
        .              : ChangeLog 
        server/swf     : tag_loaders.cpp 

Log message:
        ensure needed bytes are available, don't attempt to read 0 bytes
        from stream (malformed swf).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5064&r2=1.5065
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.157&r2=1.158

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5064
retrieving revision 1.5065
diff -u -b -r1.5064 -r1.5065
--- ChangeLog   3 Dec 2007 11:09:27 -0000       1.5064
+++ ChangeLog   3 Dec 2007 11:34:07 -0000       1.5065
@@ -1,5 +1,8 @@
 2007-12-03 Sandro Santilli <address@hidden>
 
+       * server/swf/tag_loaders.cpp (sound_stream_block_loader): ensure
+         needed bytes are available, don't attempt to read 0 bytes
+         from stream (malformed swf).
        * server/stream.{cpp,h}: drop unused get_tag_length, forbid
          seek-backs to before any opened tag start.
        * server/parser/movie_def_impl.{cpp,h}: mutex-protect

Index: server/swf/tag_loaders.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -b -r1.157 -r1.158
--- server/swf/tag_loaders.cpp  28 Nov 2007 17:35:44 -0000      1.157
+++ server/swf/tag_loaders.cpp  3 Dec 2007 11:34:08 -0000       1.158
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: tag_loaders.cpp,v 1.157 2007/11/28 17:35:44 strk Exp $ */
+/* $Id: tag_loaders.cpp,v 1.158 2007/12/03 11:34:08 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1303,9 +1303,22 @@
     unsigned int sample_count = sinfo->getSampleCount();
 
        // discard garbage data if format is MP3
-    if (format == media::AUDIO_CODEC_MP3) in->skip_bytes(4);
+    if (format == media::AUDIO_CODEC_MP3)
+    {
+        //log_debug("Skipping 4 garbage bytes of MP3 format... (CHECKME!)");
+        in->ensureBytes(4);
+        in->skip_bytes(4);
+    }
 
     unsigned int data_bytes = in->get_tag_end_position() - in->get_position();
+    if ( ! data_bytes )
+    {
+        IF_VERBOSE_MALFORMED_SWF(
+        log_swferror("No data bytes left to read in SOUNDSTREAMBLOCK tag");
+        );
+        return;
+    }
+
     unsigned char *data = new unsigned char[data_bytes];
     in->read((char*)data, data_bytes);
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]