gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r10424: Don't allow ActionSetVariabl


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10424: Don't allow ActionSetVariable and ActionSetMember to use empty strings for variable/member name, and log an ASerror if it is attempted.
Date: Sun, 14 Dec 2008 14:57:23 +0100
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 10424
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Sun 2008-12-14 14:57:23 +0100
message:
  Don't allow ActionSetVariable and ActionSetMember to use empty strings for 
variable/member name, and log an ASerror if it is attempted.
modified:
  libcore/vm/ASHandlers.cpp
  testsuite/actionscript.all/array.as
=== modified file 'libcore/vm/ASHandlers.cpp'
--- a/libcore/vm/ASHandlers.cpp 2008-12-09 09:04:55 +0000
+++ b/libcore/vm/ASHandlers.cpp 2008-12-14 13:57:23 +0000
@@ -1033,6 +1033,15 @@
     as_environment& env = thread.env;
 
     const std::string& name = env.top(1).to_string();
+    if ( name.empty() )
+    {
+        IF_VERBOSE_ASCODING_ERRORS (
+            // Invalid object, can't set.
+            log_aserror(_("ActionSetVariable: %s=%s: variable name evaluates 
to invalid (empty) string"),
+                env.top(1),
+                env.top(0));
+        );
+    }
     thread.setVariable(name, env.top(0));
 
     IF_VERBOSE_ACTION (
@@ -3245,7 +3254,17 @@
     const std::string& member_name = env.top(1).to_string();
     const as_value& member_value = env.top(0);
 
-    if (obj)
+    if ( member_name.empty() )
+    {
+        IF_VERBOSE_ASCODING_ERRORS (
+            // Invalid object, can't set.
+            log_aserror(_("ActionSetMember: %s.%s=%s: member name evaluates to 
invalid (empty) string"),
+                env.top(2),
+                env.top(1),
+                env.top(0));
+        );
+    }
+    else if (obj)
     {
         thread.setObjectMember(*(obj.get()), member_name, member_value);
 

=== modified file 'testsuite/actionscript.all/array.as'
--- a/testsuite/actionscript.all/array.as       2008-12-14 01:10:00 +0000
+++ b/testsuite/actionscript.all/array.as       2008-12-14 13:57:23 +0000
@@ -416,6 +416,10 @@
 check_equals(sparse[3], 3); // crawl inheritance chain !
 delete Array.prototype[3];
 
+c = []; c[''] = 2;
+check_equals(c.length, 0);
+check_equals(typeof(c['']), 'undefined');
+
 //-----------------------------------------------------
 // Test Array.pop()
 //-----------------------------------------------------
@@ -1466,11 +1470,11 @@
 
 
 #if OUTPUT_VERSION < 6
- check_totals(497);
+ check_totals(499);
 #else
 # if OUTPUT_VERSION < 7
-  check_totals(558);
+  check_totals(560);
 # else
-  check_totals(568);
+  check_totals(570);
 # endif
 #endif


reply via email to

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