]>
Commit | Line | Data |
---|---|---|
b37bf2e1 A |
1 | /* ***** BEGIN LICENSE BLOCK ***** |
2 | * Version: NPL 1.1/GPL 2.0/LGPL 2.1 | |
3 | * | |
4 | * The contents of this file are subject to the Netscape Public License | |
5 | * Version 1.1 (the "License"); you may not use this file except in | |
6 | * compliance with the License. You may obtain a copy of the License at | |
7 | * http://www.mozilla.org/NPL/ | |
8 | * | |
9 | * Software distributed under the License is distributed on an "AS IS" basis, | |
10 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
11 | * for the specific language governing rights and limitations under the | |
12 | * License. | |
13 | * | |
14 | * The Original Code is JavaScript Engine testing utilities. | |
15 | * | |
16 | * The Initial Developer of the Original Code is Netscape Communications Corp. | |
17 | * Portions created by the Initial Developer are Copyright (C) 2002 | |
18 | * the Initial Developer. All Rights Reserved. | |
19 | * | |
20 | * Contributor(s): pschwartau@netscape.com | |
21 | * | |
22 | * Alternatively, the contents of this file may be used under the terms of | |
23 | * either the GNU General Public License Version 2 or later (the "GPL"), or | |
24 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), | |
25 | * in which case the provisions of the GPL or the LGPL are applicable instead | |
26 | * of those above. If you wish to allow use of your version of this file only | |
27 | * under the terms of either the GPL or the LGPL, and not to allow others to | |
28 | * use your version of this file under the terms of the NPL, indicate your | |
29 | * decision by deleting the provisions above and replace them with the notice | |
30 | * and other provisions required by the GPL or the LGPL. If you do not delete | |
31 | * the provisions above, a recipient may use your version of this file under | |
32 | * the terms of any one of the NPL, the GPL or the LGPL. | |
33 | * | |
34 | * ***** END LICENSE BLOCK ***** | |
35 | * | |
36 | * | |
37 | * Date: 12 Feb 2002 | |
38 | * SUMMARY: Don't crash on invalid regexp literals / \\/ / | |
39 | * | |
40 | * See http://bugzilla.mozilla.org/show_bug.cgi?id=122076 | |
41 | * The function checkURL() below sometimes caused a compile-time error: | |
42 | * | |
43 | * SyntaxError: unterminated parenthetical (: | |
44 | * | |
45 | * However, sometimes it would cause a crash instead. The presence of | |
46 | * other functions below is merely fodder to help provoke the crash. | |
47 | * The constant |STRESS| is number of times we'll try to crash on this. | |
48 | * | |
49 | */ | |
50 | //----------------------------------------------------------------------------- | |
51 | var bug = 122076; | |
52 | var summary = "Don't crash on invalid regexp literals / \\/ /"; | |
53 | var STRESS = 10; | |
54 | var sEval = ''; | |
55 | ||
56 | printBugNumber(bug); | |
57 | printStatus(summary); | |
58 | ||
59 | ||
60 | sEval += 'function checkDate()' | |
61 | sEval += '{' | |
62 | sEval += 'return (this.value.search(/^[012]?\d\/[0123]?\d\/[0]\d$/) != -1);' | |
63 | sEval += '}' | |
64 | ||
65 | sEval += 'function checkDNSName()' | |
66 | sEval += '{' | |
67 | sEval += ' return (this.value.search(/^([\w\-]+\.)+([\w\-]{2,3})$/) != -1);' | |
68 | sEval += '}' | |
69 | ||
70 | sEval += 'function checkEmail()' | |
71 | sEval += '{' | |
72 | sEval += ' return (this.value.search(/^([\w\-]+\.)*[\w\-]+@([\w\-]+\.)+([\w\-]{2,3})$/) != -1);' | |
73 | sEval += '}' | |
74 | ||
75 | sEval += 'function checkHostOrIP()' | |
76 | sEval += '{' | |
77 | sEval += ' if (this.value.search(/^([\w\-]+\.)+([\w\-]{2,3})$/) == -1)' | |
78 | 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);' | |
79 | sEval += ' else' | |
80 | sEval += ' return true;' | |
81 | sEval += '}' | |
82 | ||
83 | sEval += 'function checkIPAddress()' | |
84 | sEval += '{' | |
85 | 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);' | |
86 | sEval += '}' | |
87 | ||
88 | sEval += 'function checkURL()' | |
89 | sEval += '{' | |
90 | sEval += ' return (this.value.search(/^(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,4}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\/\*\$+@&#;`~=%!]*)(\.\w{2,})?)*\/?)$/) != -1);' | |
91 | sEval += '}' | |
92 | ||
93 | ||
94 | for (var i=0; i<STRESS; i++) | |
95 | { | |
96 | try | |
97 | { | |
98 | eval(sEval); | |
99 | } | |
100 | catch(e) | |
101 | { | |
102 | } | |
103 | } |