CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/10/05 00:01:39
Modified files: . : ChangeLog server/vm : ASHandlers.cpp testsuite/swfdec: PASSING Log message: * server/vm/ASHandlers.cpp (ActionSetRegister, ActionPushData): Don't use global registers in a function2 context with local registers. * testsuite/swfdec/PASSING: success for register-count.swf and definefunction2-registers-#.swf CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4530&r2=1.4531 http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.139&r2=1.140 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/swfdec/PASSING?cvsroot=gnash&r1=1.35&r2=1.36 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4530 retrieving revision 1.4531 diff -u -b -r1.4530 -r1.4531 --- ChangeLog 4 Oct 2007 23:02:34 -0000 1.4530 +++ ChangeLog 5 Oct 2007 00:01:38 -0000 1.4531 @@ -1,5 +1,13 @@ 2007-10-05 Sandro Santilli <[EMAIL PROTECTED]> + * server/vm/ASHandlers.cpp (ActionSetRegister, ActionPushData): + Don't use global registers in a function2 context with local + registers. + * testsuite/swfdec/PASSING: success for register-count.swf and + definefunction2-registers-#.swf + +2007-10-05 Sandro Santilli <[EMAIL PROTECTED]> + * server/vm/ASHandlers.cpp (CommonGetUrl): case-insensitive 'fscommand' matching. Index: server/vm/ASHandlers.cpp =================================================================== RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v retrieving revision 1.139 retrieving revision 1.140 diff -u -b -r1.139 -r1.140 --- server/vm/ASHandlers.cpp 4 Oct 2007 23:02:35 -0000 1.139 +++ server/vm/ASHandlers.cpp 5 Oct 2007 00:01:38 -0000 1.140 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: ASHandlers.cpp,v 1.139 2007/10/04 23:02:35 strk Exp $ */ +/* $Id: ASHandlers.cpp,v 1.140 2007/10/05 00:01:38 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1803,16 +1803,27 @@ { uint8_t reg = code[3 + i]; ++i; - if ( thread.isFunction2() && reg < env.num_local_registers() ) + if ( thread.isFunction2() && env.num_local_registers() ) + { + if ( reg < env.num_local_registers() ) { env.push(env.local_register(reg)); } + else + { + env.push(as_value()); + IF_VERBOSE_MALFORMED_SWF( + log_swferror(_("register %d " + "out of local registers bounds (0.."SIZET_FMT")!"), reg, env.num_local_registers()); + ); + } + } else if (reg >= 4) { env.push(as_value()); IF_VERBOSE_MALFORMED_SWF( log_swferror(_("register %d " - "out of bounds"), reg); + "out of global registers bounds"), reg); ); } else @@ -3834,7 +3845,9 @@ uint8_t reg = code[thread.pc + 3]; // Save top of stack in specified register. - if ( thread.isFunction2() && reg < env.num_local_registers() ) + if ( thread.isFunction2() && env.num_local_registers() ) + { + if ( reg < env.num_local_registers() ) { env.local_register(reg) = env.top(0); @@ -3843,6 +3856,13 @@ reg, env.top(0).to_debug_string().c_str()); ); } + else + { + IF_VERBOSE_MALFORMED_SWF( + log_swferror(_("store_register[%d] -- register out of local registers bounds (0.." SIZET_FMT ")!"), reg, env.num_local_registers()); + ); + } + } else if (reg < 4) { env.global_register(reg) = env.top(0); @@ -3856,7 +3876,7 @@ else { IF_VERBOSE_MALFORMED_SWF( - log_swferror(_("store_register[%d] -- register out of bounds!"), reg); + log_swferror(_("store_register[%d] -- register out of global registers bounds!"), reg); ); } Index: testsuite/swfdec/PASSING =================================================================== RCS file: /sources/gnash/gnash/testsuite/swfdec/PASSING,v retrieving revision 1.35 retrieving revision 1.36 diff -u -b -r1.35 -r1.36 --- testsuite/swfdec/PASSING 4 Oct 2007 22:05:01 -0000 1.35 +++ testsuite/swfdec/PASSING 5 Oct 2007 00:01:39 -0000 1.36 @@ -261,3 +261,8 @@ stack-overflow-7.swf definefunction2-arguments-registers.swf definefunction2-arguments.swf +register-count.swf +definefunction2-registers-5.swf +definefunction2-registers-6.swf +definefunction2-registers-7.swf +definefunction2-registers-8.swf _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit