From 21f8f5eff5f5b19356c6791309ec8ec29d18a88c Mon Sep 17 00:00:00 2001 From: Bob Silverberg Date: Thu, 1 Sep 2016 14:46:38 -0400 Subject: [PATCH] Bug 1298923 - Prevent installation of an extension when "*" is used as part of strict_min_version in a WebExtension manifest.json, r=kmag MozReview-Commit-ID: BeHU7ZPB1NG --HG-- extra : rebase_source : c3e5e1aba0f3db247b9b9bf27b79290342cbcfe1 --- .../extensions/internal/XPIProvider.jsm | 2 +- .../xpcshell/test_webextension_install.js | 20 ++++++++----------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm index bd7a48c1f9ba..ffe5a2222c25 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm @@ -931,7 +931,7 @@ var loadManifestFromWebManifest = Task.async(function*(aUri) { // A * is illegal in strict_min_version if (bss.strict_min_version && bss.strict_min_version.split(".").some(part => part == "*")) { - logger.warn("The use of '*' in strict_min_version is deprecated"); + throw new Error("The use of '*' in strict_min_version is invalid"); } let addon = new AddonInternal(); diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js b/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js index d7fcbe694c3e..96a103e0574f 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_webextension_install.js @@ -414,7 +414,7 @@ add_task(function* test_strict_min_max() { addon.uninstall(); flushAndRemove(addonDir); - // * in min will generate a warning + // * in min will throw an error for (let version of ["0.*", "0.*.0"]) { newId = "strict_min_star@tests.mozilla.org"; let apps = { @@ -425,23 +425,19 @@ add_task(function* test_strict_min_max() { }, }, } + let testManifest = Object.assign(apps, MANIFEST); let addonDir = yield promiseWriteWebManifestForExtension(testManifest, gTmpD, - "strict_min_star"); + "strict_min_star"); - let { messages } = yield promiseConsoleOutput(function* () { - yield AddonManager.installTemporaryAddon(addonDir); - }); - ok(messages.some(msg => msg.message.includes("The use of '*' in strict_min_version is deprecated")), - "Deprecation warning for strict_min_version with '*' was generated"); + yield Assert.rejects( + AddonManager.installTemporaryAddon(addonDir), + /The use of '\*' in strict_min_version is invalid/, + "loading an extension with a * in strict_min_version throws an exception"); let addon = yield promiseAddonByID(newId); - - notEqual(addon, null, "Add-on is installed"); - equal(addon.id, newId, "Add-on has the expected id"); - - addon.uninstall(); + equal(addon, null, "Add-on is not installed"); flushAndRemove(addonDir); }