michael@0: /* check resource: protocol for traversal problems */ michael@0: michael@0: const specs = [ michael@0: "resource:///chrome/../plugins", michael@0: "resource:///chrome%2f../plugins", michael@0: "resource:///chrome/..%2fplugins", michael@0: "resource:///chrome%2f%2e%2e%2fplugins", michael@0: "resource:///../../../..", michael@0: "resource:///..%2f..%2f..%2f..", michael@0: "resource:///%2e%2e" michael@0: ]; michael@0: michael@0: function run_test() { michael@0: var ios = Cc["@mozilla.org/network/io-service;1"]. michael@0: getService(Ci.nsIIOService); michael@0: michael@0: for each (spec in specs) { michael@0: var uri = ios.newURI(spec, null, null); michael@0: if (uri.spec.indexOf("..") != -1) michael@0: do_throw("resource: traversal remains: '"+spec+"' ==> '"+uri.spec+"'"); michael@0: } michael@0: }