mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
|
const Cc = Components.classes;
|
||
|
const Ci = Components.interfaces;
|
||
|
|
||
|
function test_not_too_long() {
|
||
|
var ios = Cc["@mozilla.org/network/io-service;1"].
|
||
|
getService(Ci.nsIIOService);
|
||
|
|
||
|
var spec = "jar:http://example.com/bar.jar!/";
|
||
|
try {
|
||
|
var newURI = ios.newURI(spec, null, null);
|
||
|
}
|
||
|
catch (e) {
|
||
|
do_throw("newURI threw even though it wasn't passed a large nested URI?");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function test_too_long() {
|
||
|
var ios = Cc["@mozilla.org/network/io-service;1"].
|
||
|
getService(Ci.nsIIOService);
|
||
|
|
||
|
var i;
|
||
|
var prefix = "jar:";
|
||
|
for (i = 0; i < 16; i++) {
|
||
|
prefix = prefix + prefix;
|
||
|
}
|
||
|
var suffix = "!/";
|
||
|
for (i = 0; i < 16; i++) {
|
||
|
suffix = suffix + suffix;
|
||
|
}
|
||
|
|
||
|
var spec = prefix + "http://example.com/bar.jar" + suffix;
|
||
|
try {
|
||
|
// The following will produce a recursive call that if
|
||
|
// unchecked would lead to a stack overflow. If we
|
||
|
// do not crash here and thus an exception is caught
|
||
|
// we have passed the test.
|
||
|
var newURI = ios.newURI(spec, null, null);
|
||
|
}
|
||
|
catch (e) {
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function run_test() {
|
||
|
test_not_too_long();
|
||
|
test_too_long();
|
||
|
}
|