Prechádzať zdrojové kódy

[MERGE #5775 @akroshg] Fixing out of stack AV in Destructuring pattern.

Merge pull request #5775 from akroshg:fix5773_1

Probe stack first to see if the stack is available.
Akrosh Gandhi 7 rokov pred
rodič
commit
12cfbd0221
2 zmenil súbory, kde vykonal 25 pridanie a 0 odobranie
  1. 3 0
      lib/Parser/Parse.cpp
  2. 22 0
      test/Bugs/misc_bugs.js

+ 3 - 0
lib/Parser/Parse.cpp

@@ -12874,6 +12874,9 @@ ParseNodePtr Parser::ParseDestructuredLiteral(tokens declarationType,
 {
     ParseNodeUni * pnode = nullptr;
     Assert(IsPossiblePatternStart());
+
+    PROBE_STACK_NO_DISPOSE(m_scriptContext, Js::Constants::MinStackDefault);
+
     if (m_token.tk == tkLCurly)
     {
         pnode = ParseDestructuredObjectLiteral<buildAST>(declarationType, isDecl, topLevel);

+ 22 - 0
test/Bugs/misc_bugs.js

@@ -189,6 +189,28 @@ var tests = [
         });
       }
   },
+  {
+    name: "destructuring : testing recursion",
+    body: function () {
+      try {
+        eval(`
+            var ${'['.repeat(6631)}
+          `);
+          assert.fail();
+        }
+        catch (e) {
+        }
+        
+        try {
+            eval(`
+               var {${'a:{'.repeat(6631)}
+            `);
+            assert.fail();
+        }
+        catch (e) {
+        }
+      }
+  }
 
 ];