Do not allow newlines in regex
authorAnthony Van de Gejuchte <anthonyvdgent@gmail.com>
Sun, 5 Jun 2016 00:44:59 +0000 (02:44 +0200)
committerRichard van Velzen <rvanvelzen@experty.com>
Sun, 5 Jun 2016 15:02:19 +0000 (17:02 +0200)
lib/parse.js
test/mocha/line-endings.js

index be103b6..467fc60 100644 (file)
@@ -490,6 +490,8 @@ function tokenizer($TEXT, filename, html5_comments, shebang) {
             break;
         } else if (ch == "\\") {
             prev_backslash = true;
+        } else if ("\r\n\u2028\u2029".indexOf(ch) >= 0) {
+            parse_error("Unexpected line terminator");
         } else {
             regexp += ch;
         }
index 8fd56a1..3457dd7 100644 (file)
@@ -30,5 +30,27 @@ describe("line-endings", function() {
         var result = Uglify.minify(js, options);
         assert.strictEqual(result.code, expected_code);
     });
+
+    it("Should not allow line terminators in regexp", function() {
+        var inputs = [
+            "/\n/",
+            "/\r/",
+            "/\u2028/",
+            "/\u2029/",
+            "/someRandomTextLike[]()*AndThen\n/"
+        ]
+        var test = function(input) {
+            return function() {
+                Uglify.parse(input);
+            }
+        }
+        var fail = function(e) {
+            return e instanceof Uglify.JS_Parse_Error &&
+                e.message === "Unexpected line terminator";
+        }
+        for (var i = 0; i < inputs.length; i++) {
+            assert.throws(test(inputs[i]), fail);
+        }
+    });
 });