diff options
Diffstat (limited to 'js/src/tests/ecma_3/RegExp/regress-122076.js')
-rw-r--r-- | js/src/tests/ecma_3/RegExp/regress-122076.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/js/src/tests/ecma_3/RegExp/regress-122076.js b/js/src/tests/ecma_3/RegExp/regress-122076.js new file mode 100644 index 000000000..d4b16dbd9 --- /dev/null +++ b/js/src/tests/ecma_3/RegExp/regress-122076.js @@ -0,0 +1,76 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* + * + * Date: 12 Feb 2002 + * SUMMARY: Don't crash on invalid regexp literals / \\/ / + * + * See http://bugzilla.mozilla.org/show_bug.cgi?id=122076 + * The function checkURL() below sometimes caused a compile-time error: + * + * SyntaxError: unterminated parenthetical (: + * + * However, sometimes it would cause a crash instead. The presence of + * other functions below is merely fodder to help provoke the crash. + * The constant |STRESS| is number of times we'll try to crash on this. + * + */ +//----------------------------------------------------------------------------- +var BUGNUMBER = 122076; +var summary = "Don't crash on invalid regexp literals / \\/ /"; +var STRESS = 10; +var sEval = ''; + +printBugNumber(BUGNUMBER); +printStatus(summary); + + +sEval += 'function checkDate()' +sEval += '{' +sEval += 'return (this.value.search(/^[012]?\d\/[0123]?\d\/[0]\d$/) != -1);' +sEval += '}' + +sEval += 'function checkDNSName()' +sEval += '{' +sEval += ' return (this.value.search(/^([\w\-]+\.)+([\w\-]{2,3})$/) != -1);' +sEval += '}' + +sEval += 'function checkEmail()' +sEval += '{' +sEval += ' return (this.value.search(/^([\w\-]+\.)*[\w\-]+@([\w\-]+\.)+([\w\-]{2,3})$/) != -1);' +sEval += '}' + +sEval += 'function checkHostOrIP()' +sEval += '{' +sEval += ' if (this.value.search(/^([\w\-]+\.)+([\w\-]{2,3})$/) == -1)' +sEval += ' return (this.value.search(/^[1-2]?\d{1,2}\.[1-2]?\d{1,2}\.[1-2]?\d{1,2}\.[1-2]?\d{1,2}$/) != -1);' +sEval += ' else' +sEval += ' return true;' +sEval += '}' + +sEval += 'function checkIPAddress()' +sEval += '{' +sEval += ' return (this.value.search(/^[1-2]?\d{1,2}\.[1-2]?\d{1,2}\.[1-2]?\d{1,2}\.[1-2]?\d{1,2}$/) != -1);' +sEval += '}' + +sEval += 'function checkURL()' +sEval += '{' +sEval += ' return (this.value.search(/^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,4}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\/\*\$+@&#;`~=%!]*)(\.\w{2,})?)*\/?)$/) != -1);' +sEval += '}' + + +for (var i=0; i<STRESS; i++) +{ + try + { + eval(sEval); + } + catch(e) + { + } +} + +reportCompare('No Crash', 'No Crash', ''); |