From: Anthony Van de Gejuchte Date: Sun, 5 Jun 2016 00:44:59 +0000 (+0200) Subject: Do not allow newlines in regex X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=00ad57e393be6593c9a405c8b1277582361bd321;p=UglifyJS.git Do not allow newlines in regex --- diff --git a/lib/parse.js b/lib/parse.js index be103b67..467fc60b 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -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; } diff --git a/test/mocha/line-endings.js b/test/mocha/line-endings.js index 8fd56a19..3457dd70 100644 --- a/test/mocha/line-endings.js +++ b/test/mocha/line-endings.js @@ -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); + } + }); });