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 <[EMAIL PROTECTED]> + * server/parser/sprite_definition.cpp: handle END tags before + advertised end offset of a DEFINESPRITE tag. + +2008-02-15 Sandro Santilli <[EMAIL PROTECTED]> + * 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; _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit