mirror of
https://github.com/archlinux/aur.git
synced 2026-03-14 23:16:48 +01:00
35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
|
+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
|
|
@@ -885,8 +885,30 @@
|
|
throw new Error(`Webextension is signed with an invalid id (${addon.id})`);
|
|
}
|
|
}
|
|
- if (!addon.id && aInstallLocation.name == KEY_APP_TEMPORARY) {
|
|
- addon.id = generateTemporaryInstallID(aZipReader.file);
|
|
+ if (!addon.id) {
|
|
+ if (aInstallLocation.name == KEY_APP_TEMPORARY) {
|
|
+ addon.id = generateTemporaryInstallID(aZipReader.file);
|
|
+ } else {
|
|
+ try {
|
|
+ let sigInput = aZipReader.getInputStream("META-INF/cose.sig");
|
|
+ let sigBinary = Cc['@mozilla.org/binaryinputstream;1']
|
|
+ .createInstance(Ci.nsIBinaryInputStream);
|
|
+ sigBinary.setInputStream(sigInput);
|
|
+ var sig = ''
|
|
+ var sigCount;
|
|
+ while ((sigCount = sigBinary.available()) > 0) {
|
|
+ sig += sigBinary.readBytes(sigCount);
|
|
+ }
|
|
+ let sigMatch = sig.match(/\{\w{8}-\w{4}-\w{4}-\w{4}-\w{12}\}/g)
|
|
+ if (sigMatch && sigMatch.length == 1) {
|
|
+ addon.id = sigMatch[0]
|
|
+ } else {
|
|
+ logger.warn("Failed to find addon id");
|
|
+ }
|
|
+ } catch (e) {
|
|
+ logger.warn("Failed to process META-INF/cose.sig");
|
|
+ }
|
|
+ }
|
|
}
|
|
}
|
|
addon.updateBlocklistState();
|