Bug 603021: Hash comparisons should be case insensitive. r=dtownsend, a=blocks-betaN

This commit is contained in:
kwierso 2010-10-11 14:13:47 -07:00
Родитель 54354f785c
Коммит 06e04f6769
2 изменённых файлов: 35 добавлений и 1 удалений

Просмотреть файл

@ -4800,7 +4800,7 @@ AddonInstall.prototype = {
let binary = this.crypto.finish(false);
let hash = [toHexString(binary.charCodeAt(i)) for (i in binary)].join("")
this.crypto = null;
if (this.hash && hash != this.hash) {
if (this.hash && hash.toLowerCase() != this.hash.toLowerCase()) {
this.downloadFailed(AddonManager.ERROR_INCORRECT_HASH,
"Downloaded file hash (" + hash +
") did not match provided hash (" + this.hash + ")");

Просмотреть файл

@ -0,0 +1,34 @@
// ----------------------------------------------------------------------------
// Test whether an install succeeds using case-insensitive hashes
// This verifies bug 603021
function test() {
Harness.installEndedCallback = install_ended;
Harness.installsCompletedCallback = finish_test;
Harness.setup();
var pm = Services.perms;
pm.add(makeURI("http://example.com/"), "install", pm.ALLOW_ACTION);
var triggers = encodeURIComponent(JSON.stringify({
"Unsigned XPI": {
URL: TESTROOT + "unsigned.xpi",
Hash: "sha1:3D0DC22E1F394E159B08AAF5F0F97DE4D5C65F4F",
toString: function() { return this.URL; }
}
}));
gBrowser.selectedTab = gBrowser.addTab();
gBrowser.loadURI(TESTROOT + "installtrigger.html?" + triggers);
}
function install_ended(install, addon) {
install.cancel();
}
function finish_test(count) {
is(count, 1, "1 Add-on should have been successfully installed");
Services.perms.remove("example.com", "install");
gBrowser.removeCurrentTab();
Harness.finish();
}