gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/parser/sprite_definition...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/parser/sprite_definition...
Date: Fri, 15 Feb 2008 08:59:56 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/02/15 08:59:56

Modified files:
        .              : ChangeLog 
        server/parser  : sprite_definition.cpp 

Log message:
        handle END tags before advertised end offset of a DEFINESPRITE tag.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5658&r2=1.5659
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/sprite_definition.cpp?cvsroot=gnash&r1=1.25&r2=1.26

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5658
retrieving revision 1.5659
diff -u -b -r1.5658 -r1.5659
--- ChangeLog   15 Feb 2008 08:31:03 -0000      1.5658
+++ ChangeLog   15 Feb 2008 08:59:55 -0000      1.5659
@@ -1,5 +1,10 @@
 2008-02-15 Sandro Santilli <address@hidden>
 
+       * server/parser/sprite_definition.cpp: handle END tags before
+         advertised end offset of a DEFINESPRITE tag.
+
+2008-02-15 Sandro Santilli <address@hidden>
+
        * testsuite/swfdec/swfdec_gnash_tester: accept a second argument
          to specify additional flags. Currently unused by might get
          handy to augment sleep time for some load to be more likely

Index: server/parser/sprite_definition.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/sprite_definition.cpp,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- server/parser/sprite_definition.cpp 21 Jan 2008 20:56:01 -0000      1.25
+++ server/parser/sprite_definition.cpp 15 Feb 2008 08:59:56 -0000      1.26
@@ -68,7 +68,7 @@
 void
 sprite_definition::read(stream* in)
 {
-       int tag_end = in->get_tag_end_position();
+       unsigned long tag_end = in->get_tag_end_position();
 
        m_frame_count = in->read_u16();
 
@@ -78,7 +78,7 @@
 
        m_loading_frame = 0;
 
-       while ((boost::uint32_t) in->get_position() < (boost::uint32_t) tag_end)
+       while ( in->get_position() < tag_end )
        {
                SWF::tag_type tag_type = in->open_tag();
 
@@ -92,7 +92,22 @@
                }
                );
 
-               if (tag_type == SWF::SHOWFRAME)
+               if (tag_type == SWF::END)
+                {
+                       if (in->get_position() != tag_end)
+                        {
+                               IF_VERBOSE_MALFORMED_SWF(
+                               // Safety break, so we don't read past
+                               // the end of the  movie.
+                               log_swferror(_("Hit end tag, "
+                                       "before the advertised DEFINESPRITE 
end; "
+                                       "stopping for safety."));
+                               )
+                               in->close_tag();
+                               break;
+                       }
+               }
+               else if (tag_type == SWF::SHOWFRAME)
                {
                        // show frame tag -- advance to the next frame.
                        ++m_loading_frame;




reply via email to

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