[Pkg-javascript-commits] [node-acorn-jsx] 59/484: Make sure readInt doesn't try to read past len, if given

Bastien Roucariès rouca at moszumanska.debian.org
Sat Aug 19 14:20:05 UTC 2017


This is an automated email from the git hooks/post-receive script.

rouca pushed a commit to branch master
in repository node-acorn-jsx.

commit 5c44c134651d71e6733a94e28d671667b54051c1
Author: Marijn Haverbeke <marijnh at gmail.com>
Date:   Thu Nov 22 10:07:19 2012 +0100

    Make sure readInt doesn't try to read past len, if given
    
    Issue #15
---
 acorn.js      |  2 +-
 index.html    |  2 +-
 test/tests.js | 13 +++++++++++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/acorn.js b/acorn.js
index 7785748..732c42c 100644
--- a/acorn.js
+++ b/acorn.js
@@ -673,7 +673,7 @@
 
   function readInt(radix, len) {
     var start = tokPos, total = 0;
-    for (;;) {
+    for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {
       var code = input.charCodeAt(tokPos), val;
       if (code >= 97) val = code - 97 + 10; // a
       else if (code >= 65) val = code - 65 + 10; // A
diff --git a/index.html b/index.html
index 625d5a6..aae57ab 100644
--- a/index.html
+++ b/index.html
@@ -451,7 +451,7 @@ here (don't ask).</p>             </td>             <td class="code">
 were read, the integer value otherwise. When <code>len</code> is given, this
 will return <code>null</code> unless the integer has exactly <code>len</code> digits.</p>             </td>             <td class="code">               <div class="highlight"><pre>  <span class="kd">function</span> <span class="nx">readInt</span><span class="p">(</span><span class="nx">radix</span><span class="p">,</span> <span class="nx">len</span><span class="p">)</span> <span class="p">{</span>
     <span class="kd">var</span> <span class="nx">start</span> <span class="o">=</span> <span class="nx">tokPos</span><span class="p">,</span> <span class="nx">total</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-    <span class="k">for</span> <span class="p">(;;)</span> <span class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">e</span> <span class="o">=</span> <span class="nx">len</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">?</span> <span class="kc">Infinity</span> <span class="o">:</span> <span class="nx">len</span><span class="p">;</span> <span class="nx">i</span> <span class=" [...]
       <span class="kd">var</span> <span class="nx">code</span> <span class="o">=</span> <span class="nx">input</span><span class="p">.</span><span class="nx">charCodeAt</span><span class="p">(</span><span class="nx">tokPos</span><span class="p">),</span> <span class="nx">val</span><span class="p">;</span>
       <span class="k">if</span> <span class="p">(</span><span class="nx">code</span> <span class="o">>=</span> <span class="mi">97</span><span class="p">)</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">code</span> <span class="o">-</span> <span class="mi">97</span> <span class="o">+</span> <span class="mi">10</span><span class="p">;</span> <span class="c1">// a</span>
       <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">code</span> <span class="o">>=</span> <span class="mi">65</span><span class="p">)</span> <span class="nx">val</span> <span class="o">=</span> <span class="nx">code</span> <span class="o">-</span> <span class="mi">65</span> <span class="o">+</span> <span class="mi">10</span><span class="p">;</span> <span class="c1">// A</span>
diff --git a/test/tests.js b/test/tests.js
index e571d49..ac69bb6 100644
--- a/test/tests.js
+++ b/test/tests.js
@@ -26016,6 +26016,19 @@ test("a\u2028b", {
   ]
 });
 
+test("'a\\u0026b'", {
+  type: "Program",
+  body: [
+    {
+      type: "ExpressionStatement",
+      expression: {
+        type: "Literal",
+        value: "a\u0026b"
+      }
+    }
+  ]
+});
+
 // Failure tests
 
 testFail("{",

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-acorn-jsx.git



More information about the Pkg-javascript-commits mailing list