CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 08/01/28 20:36:29
Modified files: . : ChangeLog server/swf : tag_loaders.cpp Log message: robustness improvements. Fix bug #22152. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5512&r2=1.5513 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.180&r2=1.181 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5512 retrieving revision 1.5513 diff -u -b -r1.5512 -r1.5513 --- ChangeLog 28 Jan 2008 19:42:21 -0000 1.5512 +++ ChangeLog 28 Jan 2008 20:36:28 -0000 1.5513 @@ -1,5 +1,7 @@ 2008-01-28 Sandro Santilli <[EMAIL PROTECTED]> + * server/swf/tag_loaders.cpp (button_sound_loader): robustness + improvements. Fix bug #22152. * server/parser/action_buffer.cpp (read): just log an swf error and return if the action buffer is 0 bytes long. Fixes bug #22148. Index: server/swf/tag_loaders.cpp =================================================================== RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v retrieving revision 1.180 retrieving revision 1.181 diff -u -b -r1.180 -r1.181 --- server/swf/tag_loaders.cpp 21 Jan 2008 20:56:03 -0000 1.180 +++ server/swf/tag_loaders.cpp 28 Jan 2008 20:36:29 -0000 1.181 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: tag_loaders.cpp,v 1.180 2008/01/21 20:56:03 rsavoye Exp $ */ +/* $Id: tag_loaders.cpp,v 1.181 2008/01/28 20:36:29 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "gnashconfig.h" @@ -923,10 +923,25 @@ int button_character_id = in->read_u16(); character_def* chdef = m->get_character_def(button_character_id); + if ( ! chdef ) + { + IF_VERBOSE_MALFORMED_SWF( + log_swferror(_("DEFINEBUTTONSOUND refers to an unknown character def %d"), button_character_id); + ); + return; + } - assert ( dynamic_cast<button_character_definition*> (chdef) ); - button_character_definition* ch = static_cast<button_character_definition*> (chdef); - assert(ch != NULL); + button_character_definition* ch = dynamic_cast<button_character_definition*> (chdef); + if ( ! ch ) + { + IF_VERBOSE_MALFORMED_SWF( + log_swferror(_("DEFINEBUTTONSOUND refers to character id %d, " + "being a %s (expected a button definition)"), + button_character_id, + typeName(*chdef).c_str()); + ); + return; + } ch->read(in, tag, m); } _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit