Bug 1355334 Bail out immediately on manifest errors when parsing a webextension r?kmag
MozReview-Commit-ID: LdwimNj1upZ
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -958,25 +958,27 @@ function getRDFProperty(aDs, aResource,
var loadManifestFromWebManifest = Task.async(function*(aUri) {
// We're passed the URI for the manifest file. Get the URI for its
// parent directory.
let uri = NetUtil.newURI("./", null, aUri);
let extension = new ExtensionData(uri);
let manifest = yield extension.loadManifest();
- let theme = !!manifest.theme;
// Read the list of available locales, and pre-load messages for
// all locales.
- let locales = yield extension.initAllLocales();
-
- // If there were any errors loading the extension, bail out now.
- if (extension.errors.length)
+ let locales = (extension.errors.length == 0) ?
+ yield extension.initAllLocales() : null;
+
+ if (extension.errors.length > 0) {
throw new Error("Extension is invalid");
+ }
+
+ let theme = Boolean(manifest.theme);
let bss = (manifest.browser_specific_settings && manifest.browser_specific_settings.gecko)
|| (manifest.applications && manifest.applications.gecko) || {};
if (manifest.browser_specific_settings && manifest.applications) {
logger.warn("Ignoring applications property in manifest");
}
// A * is illegal in strict_min_version