diff -Nru enigmail-2.0.6/configure enigmail-2.0.7/configure --- enigmail-2.0.6/configure 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/configure 2018-06-12 16:13:36.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for enigmail 2.0.6. +# Generated by GNU Autoconf 2.69 for enigmail 2.0.7. # # Report bugs to . # @@ -579,8 +579,8 @@ # Identity of this package. PACKAGE_NAME='enigmail' PACKAGE_TARNAME='enigmail' -PACKAGE_VERSION='2.0.6' -PACKAGE_STRING='enigmail 2.0.6' +PACKAGE_VERSION='2.0.7' +PACKAGE_STRING='enigmail 2.0.7' PACKAGE_BUGREPORT='https://www.enigmail.net' PACKAGE_URL='' @@ -1195,7 +1195,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures enigmail 2.0.6 to adapt to many kinds of systems. +\`configure' configures enigmail 2.0.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1261,7 +1261,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of enigmail 2.0.6:";; + short | recursive ) echo "Configuration of enigmail 2.0.7:";; esac cat <<\_ACEOF @@ -1343,7 +1343,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -enigmail configure 2.0.6 +enigmail configure 2.0.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1360,7 +1360,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by enigmail $as_me 2.0.6, which was +It was created by enigmail $as_me 2.0.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ diff -Nru enigmail-2.0.6/configure.ac enigmail-2.0.7/configure.ac --- enigmail-2.0.6/configure.ac 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/configure.ac 2018-06-12 16:13:36.000000000 +0000 @@ -2,7 +2,7 @@ AC_PREREQ(2.61) min_automake_version="1.10" -AC_INIT([enigmail],[2.0.6], [https://www.enigmail.net]) +AC_INIT([enigmail],[2.0.7], [https://www.enigmail.net]) AC_PATH_PROG(PYTHON, "python2") diff -Nru enigmail-2.0.6/debian/changelog enigmail-2.0.7/debian/changelog --- enigmail-2.0.6/debian/changelog 2018-05-29 15:56:35.000000000 +0000 +++ enigmail-2.0.7/debian/changelog 2018-06-14 12:29:27.000000000 +0000 @@ -1,11 +1,20 @@ -enigmail (2:2.0.6-0ubuntu1~16.04.1) xenial-security; urgency=medium +enigmail (2:2.0.7-0ubuntu1~16.04.1) xenial-security; urgency=medium - * Backport 2.0.6 to xenial + * SECURITY UPDATE: Spoofing of Email signatures + - CVE-2018-12019, CVE-2018-12020 + + * Backport 2.0.7 to xenial * Relax debhelper requirement - update debian/control - update debian/compat - -- Chris Coulson Tue, 29 May 2018 16:56:35 +0100 + -- Chris Coulson Thu, 14 Jun 2018 13:29:27 +0100 + +enigmail (2:2.0.7-0ubuntu1) cosmic; urgency=medium + + * Update to 2.0.7 + + -- Chris Coulson Thu, 14 Jun 2018 13:26:16 +0100 enigmail (2:2.0.6-0ubuntu1) cosmic; urgency=medium diff -Nru enigmail-2.0.6/Makefile enigmail-2.0.7/Makefile --- enigmail-2.0.6/Makefile 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/Makefile 2018-06-12 16:13:36.000000000 +0000 @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. XPI_MODULE = enigmail -XPI_MODULE_VERS = 2.0.6 +XPI_MODULE_VERS = 2.0.7 DEPTH = . diff -Nru enigmail-2.0.6/package/card.jsm enigmail-2.0.7/package/card.jsm --- enigmail-2.0.6/package/card.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/card.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -21,7 +21,7 @@ getCardStatus: function(exitCodeObj, errorMsgObj) { EnigmailLog.DEBUG("card.jsm: EnigmailCard.getCardStatus\n"); const args = EnigmailGpg.getStandardArgs(false). - concat(["--status-fd", "2", "--fixed-list-mode", "--with-colons", "--card-status"]); + concat(["--no-verbose", "--status-fd", "2", "--fixed-list-mode", "--with-colons", "--card-status"]); const statusMsgObj = {}; const statusFlagsObj = {}; diff -Nru enigmail-2.0.6/package/commandLine.jsm enigmail-2.0.7/package/commandLine.jsm --- enigmail-2.0.6/package/commandLine.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/commandLine.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -22,7 +22,6 @@ const nsICommandLineHandler = Ci.nsICommandLineHandler; const nsIFactory = Ci.nsIFactory; -const nsISupports = Ci.nsISupports; function Handler() {} @@ -30,7 +29,7 @@ classDescription: "Enigmail Key Management CommandLine Service", classID: NS_ENIGCLINE_SERVICE_CID, contractID: NS_CLINE_SERVICE_CONTRACTID, - QueryInterface: XPCOMUtils.generateQI([nsICommandLineHandler, nsIFactory, nsISupports]), + QueryInterface: XPCOMUtils.generateQI([nsICommandLineHandler, nsIFactory]), // nsICommandLineHandler handle: function(cmdLine) { diff -Nru enigmail-2.0.6/package/core.jsm enigmail-2.0.7/package/core.jsm --- enigmail-2.0.6/package/core.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/core.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -47,7 +47,6 @@ // Interfaces -const nsISupports = Ci.nsISupports; const nsIEnvironment = Ci.nsIEnvironment; var gPreferredGpgPath = null; diff -Nru enigmail-2.0.6/package/decryption.jsm enigmail-2.0.7/package/decryption.jsm --- enigmail-2.0.6/package/decryption.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/decryption.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -64,10 +64,10 @@ decryptMessageStart: function(win, verifyOnly, noOutput, listener, statusFlagsObj, errorMsgObj, mimeSignatureFile, maxOutputLength) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageStart: verifyOnly=" + verifyOnly + "\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageStart: verifyOnly=" + verifyOnly + "\n"); if (!EnigmailCore.getService(win)) { - EnigmailLog.ERROR("enigmailCommon.jsm: decryptMessageStart: not yet initialized\n"); + EnigmailLog.ERROR("decryption.jsm: decryptMessageStart: not yet initialized\n"); errorMsgObj.value = EnigmailLocale.getString("notInit"); return null; } @@ -79,6 +79,10 @@ var args = EnigmailGpg.getStandardArgs(true); + let logFile = EnigmailErrorHandling.getTempLogFile(); + args.push("--log-file"); + args.push(EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePath(logFile))); + var keyserver = EnigmailPrefs.getPref("autoKeyRetrieve"); if (keyserver && keyserver !== "") { keyserver = keyserver.trim(); @@ -129,12 +133,26 @@ args.push("--decrypt"); } - var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, + if (!listener) { + listener = {}; + } + if ("done" in listener) { + listener.outerDone = listener.done; + } + + listener.done = function(exitCode) { + EnigmailErrorHandling.appendLogFileToDebug(logFile); + if (this.outerDone) { + this.outerDone(exitCode); + } + }; + + let proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, args, !verifyOnly, win, listener, statusFlagsObj); if (statusFlagsObj.value & EnigmailConstants.MISSING_PASSPHRASE) { - EnigmailLog.ERROR("enigmailCommon.jsm: decryptMessageStart: Error - no passphrase supplied\n"); + EnigmailLog.ERROR("decryption.jsm: decryptMessageStart: Error - no passphrase supplied\n"); errorMsgObj.value = EnigmailLocale.getString("noPassphrase"); return null; @@ -145,10 +163,10 @@ decryptMessageEnd: function(stderrStr, exitCode, outputLen, verifyOnly, noOutput, uiFlags, retStatusObj) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: uiFlags=" + uiFlags + ", verifyOnly=" + verifyOnly + ", noOutput=" + noOutput + "\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: uiFlags=" + uiFlags + ", verifyOnly=" + verifyOnly + ", noOutput=" + noOutput + "\n"); stderrStr = stderrStr.replace(/\r\n/g, "\n"); - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: stderrStr=\n" + stderrStr + "\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: stderrStr=\n" + stderrStr + "\n"); var interactive = uiFlags & EnigmailConstants.UI_INTERACTIVE; var pgpMime = uiFlags & EnigmailConstants.UI_PGP_MIME; var allowImport = uiFlags & EnigmailConstants.UI_ALLOW_KEY_IMPORT; @@ -194,18 +212,20 @@ // possible STATUS Patterns (see GPG dod DETAILS.txt): // one of these should be set for a signature: - var goodsigPat = /GOODSIG (\w{16}) (.*)$/i; - var badsigPat = /BADSIG (\w{16}) (.*)$/i; - var expsigPat = /EXPSIG (\w{16}) (.*)$/i; - var expkeysigPat = /EXPKEYSIG (\w{16}) (.*)$/i; - var revkeysigPat = /REVKEYSIG (\w{16}) (.*)$/i; - var errsigPat = /ERRSIG (\w{16}) (.*)$/i; + var newsigPat = /^NEWSIG /i; + var trustedsigPat = /^TRUST_(FULLY|ULTIMATE) /i; + var goodsigPat = /^GOODSIG (\w{16}) (.*)$/i; + var badsigPat = /^BADSIG (\w{16}) (.*)$/i; + var expsigPat = /^EXPSIG (\w{16}) (.*)$/i; + var expkeysigPat = /^EXPKEYSIG (\w{16}) (.*)$/i; + var revkeysigPat = /^REVKEYSIG (\w{16}) (.*)$/i; + var errsigPat = /^ERRSIG (\w{16}) (.*)$/i; // additional infos for good signatures: - var validSigPat = /VALIDSIG (\w+) (.*) (\d+) (.*)/i; + var validSigPat = /^VALIDSIG (\w+) (.*) (\d+) (.*)/i; // hint for a certain key id: - var userIdHintPat = /USERID_HINT (\w{16}) (.*)$/i; + var userIdHintPat = /^USERID_HINT (\w{16}) (.*)$/i; // to find out for which recipients the email was encrypted: - var encToPat = /ENC_TO (\w{16}) (.*)$/i; + var encToPat = /^ENC_TO (\w{16}) (.*)$/i; var matches; @@ -214,11 +234,12 @@ var sigKeyId = ""; // key of sender var sigUserId = ""; // user ID of sender var sigDetails = ""; + var sigTrusted = false; var encToDetails = ""; var encToArray = []; // collect ENC_TO lines here for (j = 0; j < errLines.length; j++) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: process: " + errLines[j] + "\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: process: " + errLines[j] + "\n"); // ENC_TO entry // - collect them for later processing to print details @@ -237,11 +258,46 @@ //} // check for one of the possible SIG entries: + + matches = errLines[j].match(newsigPat); + if (matches) { + if (signed) { + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: multiple SIGN entries - ignoring previous signature\n"); + } + signed = true; + goodOrExpOrRevSignature = false; + sigKeyId = ""; + sigUserId = ""; + sigDetails = ""; + sigTrusted = false; + continue; + } + + matches = errLines[j].match(trustedsigPat); + if (matches) { + sigTrusted = true; + continue; + } + + matches = errLines[j].match(validSigPat); + if (matches && (matches.length > 4)) { + if (matches[4].length == 40) { + // in case of several subkeys refer to the main key ID. + // Only works with PGP V4 keys (Fingerprint length ==40) + sigKeyId = matches[4].substr(-16); + } + if (matches && (matches.length > 2)) { + sigDetails = errLines[j].substr(9); + break; + } + continue; + } + // GOODSIG entry matches = errLines[j].match(goodsigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; @@ -253,7 +309,7 @@ matches = errLines[j].match(badsigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = false; @@ -265,7 +321,7 @@ matches = errLines[j].match(expsigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; @@ -277,7 +333,7 @@ matches = errLines[j].match(expkeysigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; @@ -289,7 +345,7 @@ matches = errLines[j].match(revkeysigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = true; @@ -301,7 +357,7 @@ matches = errLines[j].match(errsigPat); if (matches && (matches.length > 2)) { if (signed) { - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: OOPS: multiple SIGN entries\n"); } signed = true; goodOrExpOrRevSignature = false; @@ -316,20 +372,8 @@ } // end loop of processing errLines - if (goodOrExpOrRevSignature) { - for (j = 0; j < errLines.length; j++) { - matches = errLines[j].match(validSigPat); - if (matches && (matches.length > 4)) { - if (matches[4].length == 40) - // in case of several subkeys refer to the main key ID. - // Only works with PGP V4 keys (Fingerprint length ==40) - sigKeyId = matches[4].substr(-16); - } - if (matches && (matches.length > 2)) { - sigDetails = errLines[j].substr(9); - break; - } - } + if (sigTrusted) { + retStatusObj.statusFlags |= EnigmailConstants.TRUSTED_IDENTITY; } if (sigUserId && sigKeyId && EnigmailPrefs.getPref("displaySecondaryUid")) { @@ -403,7 +447,7 @@ if (exitCode !== 0) { // Error processing - EnigmailLog.DEBUG("enigmailCommon.jsm: decryptMessageEnd: command execution exit code: " + exitCode + "\n"); + EnigmailLog.DEBUG("decryption.jsm: decryptMessageEnd: command execution exit code: " + exitCode + "\n"); } return exitCode; diff -Nru enigmail-2.0.6/package/encryption.jsm enigmail-2.0.7/package/encryption.jsm --- enigmail-2.0.6/package/encryption.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/encryption.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -43,7 +43,8 @@ var EnigmailEncryption = { - getEncryptCommand: function(fromMailAddr, toMailAddr, bccMailAddr, hashAlgorithm, sendFlags, isAscii, errorMsgObj) { + getEncryptCommand: function(fromMailAddr, toMailAddr, bccMailAddr, hashAlgorithm, sendFlags, isAscii, errorMsgObj, + logFileObj) { EnigmailLog.DEBUG("encryption.jsm: getEncryptCommand: hashAlgorithm=" + hashAlgorithm + "\n"); try { @@ -93,6 +94,12 @@ encryptArgs = encryptArgs.concat(["--digest-algo", hashAlgorithm]); } + if (logFileObj) { + logFileObj.value = EnigmailErrorHandling.getTempLogFile(); + encryptArgs.push("--log-file"); + encryptArgs.push(EnigmailFiles.getEscapedFilename(EnigmailFiles.getFilePath(logFileObj.value))); + } + if (encryptMsg) { switch (isAscii) { case ENC_TYPE_MSG: @@ -264,11 +271,25 @@ return null; } - var encryptArgs = EnigmailEncryption.getEncryptCommand(fromMailAddr, toMailAddr, bccMailAddr, hashAlgo, sendFlags, ENC_TYPE_MSG, errorMsgObj); + let logFileObj = {}; + let encryptArgs = EnigmailEncryption.getEncryptCommand(fromMailAddr, toMailAddr, bccMailAddr, hashAlgo, sendFlags, ENC_TYPE_MSG, errorMsgObj, logFileObj); if (!encryptArgs) return null; var signMsg = sendFlags & EnigmailConstants.SEND_SIGNED; + if (!listener) { + listener = {}; + } + if ("done" in listener) { + listener.outerDone = listener.done; + } + + listener.done = function(exitCode) { + EnigmailErrorHandling.appendLogFileToDebug(logFileObj.value); + if (this.outerDone) { + this.outerDone(exitCode); + } + }; var proc = EnigmailExecution.execStart(EnigmailGpgAgent.agentPath, encryptArgs, signMsg, win, listener, statusFlagsObj); diff -Nru enigmail-2.0.6/package/errorHandling.jsm enigmail-2.0.7/package/errorHandling.jsm --- enigmail-2.0.6/package/errorHandling.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/errorHandling.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -23,6 +23,8 @@ const getEnigmailKeyRing = EnigmailLazy.loader("enigmail/keyRing.jsm", "EnigmailKeyRing"); const getEnigmailGpg = EnigmailLazy.loader("enigmail/gpg.jsm", "EnigmailGpg"); +const getEnigmailFiles = EnigmailLazy.loader("enigmail/files.jsm", "EnigmailFiles"); +const getEnigmailRNG = EnigmailLazy.loader("enigmail/rng.jsm", "EnigmailRNG"); const gStatusFlags = { GOODSIG: EnigmailConstants.GOOD_SIGNATURE, @@ -44,8 +46,6 @@ ERROR: EnigmailConstants.BAD_SIGNATURE | EnigmailConstants.DECRYPTION_FAILED, DECRYPTION_FAILED: EnigmailConstants.DECRYPTION_FAILED, DECRYPTION_OKAY: EnigmailConstants.DECRYPTION_OKAY, - TRUST_FULLY: EnigmailConstants.TRUSTED_IDENTITY, - TRUST_ULTIMATE: EnigmailConstants.TRUSTED_IDENTITY, CARDCTRL: EnigmailConstants.CARDCTRL, SC_OP_FAILURE: EnigmailConstants.SC_OP_FAILURE, UNKNOWN_ALGO: EnigmailConstants.UNKNOWN_ALGO, @@ -431,14 +431,19 @@ function detectForgedInsets(c) { // detect forged message insets + let hasUnencryptedText = false; + let hasEncryptedPart = false; for (var j = 0; j < c.statusArray.length; j++) { if (c.statusArray[j].search(c.cryptoStartPat) === 0) { c.withinCryptoMsg = true; + hasEncryptedPart = true; } else if (c.withinCryptoMsg && c.statusArray[j].search(c.cryptoEndPat) === 0) { c.withinCryptoMsg = false; } else if (c.statusArray[j].search(c.plaintextPat) === 0) { + if (!c.withinCryptoMsg) hasUnencryptedText = true; + ++c.plaintextCount; if ((c.statusArray.length > j + 1) && (c.statusArray[j + 1].search(c.plaintextLengthPat) === 0)) { var matches = c.statusArray[j + 1].match(/(\w+) (\d+)/); @@ -452,8 +457,8 @@ } } } - if (c.plaintextCount > 1) { - c.statusFlags |= (EnigmailConstants.PARTIALLY_PGP | EnigmailConstants.DECRYPTION_FAILED | EnigmailConstants.BAD_SIGNATURE); + if (c.plaintextCount > 1 || (hasEncryptedPart && hasUnencryptedText)) { + c.statusFlags |= (EnigmailConstants.DECRYPTION_FAILED | EnigmailConstants.BAD_SIGNATURE); } } @@ -604,5 +609,34 @@ } return reasonMsg; + }, + + /** + * Get a unique file to use for logging with --log-file + */ + getTempLogFile: function() { + let logFile = getEnigmailFiles().getTempDirObj().clone(); + logFile.normalize(); + logFile.append("gpgOutput." + getEnigmailRNG().generateRandomString(6)); + return logFile; + }, + + + /** + * Append the content of a file (such as created via --log-file) to the + * debug log, and delete the file afterwards + * + * @param logFile: nsIFile object + */ + appendLogFileToDebug: function(logFile) { + if (logFile && logFile.exists() && logFile.isFile()) { + let logData = getEnigmailFiles().readFile(logFile); + + EnigmailLog.DEBUG(`errorHandling.jsm: Process terminated. Human-readable output from gpg:\n-----\n${logData}-----\n`); + try { + logFile.remove(false); + } + catch (ex) {} + } } }; diff -Nru enigmail-2.0.6/package/gpg.jsm enigmail-2.0.7/package/gpg.jsm --- enigmail-2.0.6/package/gpg.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/gpg.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -30,7 +30,7 @@ const getDialog = EnigmailLazy.loader("enigmail/dialog.jsm", "EnigmailDialog"); const MINIMUM_GPG_VERSION = "2.0.14"; -const GPG_BATCH_OPT_LIST = ["--batch", "--no-tty", "--status-fd", "2"]; +const GPG_BATCH_OPT_LIST = ["--batch", "--no-tty", "--no-verbose", "--status-fd", "2"]; function pushTrimmedStr(arr, str, splitStr) { // Helper function for pushing a string without leading/trailing spaces diff -Nru enigmail-2.0.6/package/installGnuPG.jsm enigmail-2.0.7/package/installGnuPG.jsm --- enigmail-2.0.6/package/installGnuPG.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/installGnuPG.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -329,7 +329,7 @@ // use runwAsync in order to get UAC approval on Windows 7 / 8 if required var obs = { - QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupports]), + QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]), observe: function(proc, aTopic, aData) { EnigmailLog.DEBUG("installGnuPG.jsm: installWindows.observe: topic='" + aTopic + "' \n"); diff -Nru enigmail-2.0.6/package/install.rdf enigmail-2.0.7/package/install.rdf --- enigmail-2.0.6/package/install.rdf 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/install.rdf 2018-06-12 16:13:36.000000000 +0000 @@ -5,7 +5,7 @@ {847b3a00-7ab1-11d4-8f02-006008948af5} - 2.0.6 + 2.0.7 2 true diff -Nru enigmail-2.0.6/package/keyEditor.jsm enigmail-2.0.7/package/keyEditor.jsm --- enigmail-2.0.6/package/keyEditor.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/keyEditor.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -251,7 +251,7 @@ var statusFlags = {}; - args = args.concat(["--no-tty", "--status-fd", "1", "--logger-fd", "1", "--command-fd", "0"]); + args = args.concat(["--no-tty", "--no-verbose", "--status-fd", "1", "--logger-fd", "1", "--command-fd", "0"]); if (userId) args = args.concat(["-u", userId]); var editCmdArr; if (typeof(editCmd) == "string") { diff -Nru enigmail-2.0.6/package/key.jsm enigmail-2.0.7/package/key.jsm --- enigmail-2.0.6/package/key.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/key.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -173,7 +173,7 @@ break; case "userid": if (!key.name) { - key.name = m.packets[i].userid; + key.name = m.packets[i].userid.replace(/[\r\n]+/g, " "); } break; case "signature": diff -Nru enigmail-2.0.6/package/keyRing.jsm enigmail-2.0.7/package/keyRing.jsm --- enigmail-2.0.6/package/keyRing.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/keyRing.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -375,7 +375,7 @@ importKeyFromFile: function(inputFile, errorMsgObj, importedKeysObj) { EnigmailLog.DEBUG("keyRing.jsm: EnigmailKeyRing.importKeyFromFile: fileName=" + inputFile.path + "\n"); var command = EnigmailGpg.agentPath; - var args = EnigmailGpg.getStandardArgs(false).concat(["--status-fd", "2", "--no-auto-check-trustdb", "--import"]); + var args = EnigmailGpg.getStandardArgs(false).concat(["--no-verbose", "--status-fd", "2", "--no-auto-check-trustdb", "--import"]); importedKeysObj.value = ""; var fileName = EnigmailFiles.getEscapedFilename((inputFile.QueryInterface(Ci.nsIFile)).path); @@ -728,7 +728,7 @@ } } - const args = EnigmailGpg.getStandardArgs(false).concat(["--status-fd", "2", "--no-auto-check-trustdb", "--import"]); + const args = EnigmailGpg.getStandardArgs(false).concat(["--no-verbose", "--status-fd", "2", "--no-auto-check-trustdb", "--import"]); const exitCodeObj = {}; const statusMsgObj = {}; @@ -779,7 +779,7 @@ const args = EnigmailGpg.getStandardArgs(false). concat(["--no-secmem-warning", "--no-verbose", "--no-auto-check-trustdb", - "--batch", "--no-tty", "--status-fd", "1", "--attribute-fd", "2", + "--batch", "--no-tty", "--no-verbose", "--status-fd", "1", "--attribute-fd", "2", "--fixed-list-mode", "--list-keys", keyId ]); diff -Nru enigmail-2.0.6/package/msgCompFields.jsm enigmail-2.0.7/package/msgCompFields.jsm --- enigmail-2.0.6/package/msgCompFields.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/msgCompFields.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -112,8 +112,7 @@ QueryInterface: XPCOMUtils.generateQI([ Ci.nsIMsgSearchValue, // we abuse nsIMsgSearchValue as we cannot create a custom QueryInterface anymore Ci.nsIMsgSMIMECompFields, - Ci.nsIMsgCompFields, - Ci.nsISupports + Ci.nsIMsgCompFields ]), toString: function() { diff -Nru enigmail-2.0.6/package/os.jsm enigmail-2.0.7/package/os.jsm --- enigmail-2.0.6/package/os.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/os.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -16,8 +16,8 @@ const XPCOM_APPINFO = "@mozilla.org/xre/app-info;1"; -Cu.import("resource://enigmail/lazy.jsm"); /* global EnigmailLazy: false */ -const getExecution = EnigmailLazy.loader("enigmail/execution.jsm", "EnigmailExecution"); +// Cu.import("chrome://enigmail/content/modules/lazy.jsm"); /* global EnigmailLazy: false */ +// const getExecution = EnigmailLazy.loader("enigmail/execution.jsm", "EnigmailExecution"); let operatingSystem = null; @@ -56,9 +56,9 @@ isDosLike: isDosLike(), /** - * isWin32 identifies whether the running system is 32 bit Windows machine + * isWin32 identifies whether the running system is a Windows (32 or 64 bit) machine * - * @return Boolean - True if local host is a 32 bit Windows machine. False otherwise. + * @return Boolean - True if local host is a Windows machine. False otherwise. */ isWin32: isWin32(), @@ -90,5 +90,14 @@ catch (ex) {} return retval; + }, + + getNullFile: function() { + if (this.isDosLike) { + return "NUL"; + } + else { + return "/dev/null"; + } } }; diff -Nru enigmail-2.0.6/package/overlays.jsm enigmail-2.0.7/package/overlays.jsm --- enigmail-2.0.6/package/overlays.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/overlays.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -108,6 +108,7 @@ // // Overlay for Customize Toolbar (Windows, Linux) "chrome://global/content/customizeToolbar.xul": ["enigmailCustToolOverlay.xul"], + "chrome://messenger/content/customizeToolbar.xul": ["enigmailCustToolOverlay.xul"], // // // Overlay for Account Manager diff -Nru enigmail-2.0.6/package/socks5Proxy.jsm enigmail-2.0.7/package/socks5Proxy.jsm --- enigmail-2.0.6/package/socks5Proxy.jsm 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/socks5Proxy.jsm 2018-06-12 16:13:36.000000000 +0000 @@ -69,7 +69,7 @@ applyFilter: function(proxyService, uri, proxyInfo) { return proxyService.newProxyInfo("socks", getEnigmailPrefs().getPref(TOR_IP_ADDR_PREF), port, CONNECTION_FLAGS, SECONDS_TO_WAIT_FOR_CONNECTION, failoverProxy); }, - QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolProxyFilter, Ci.nsISupports]) + QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolProxyFilter]) }; } diff -Nru enigmail-2.0.6/package/tests/keyserverUris-test.js enigmail-2.0.7/package/tests/keyserverUris-test.js --- enigmail-2.0.6/package/tests/keyserverUris-test.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/package/tests/keyserverUris-test.js 2018-06-12 16:13:36.000000000 +0000 @@ -48,12 +48,12 @@ const keyserverUris = buildKeyserverUris(); - Assert.equal(keyserverUris[0],"hkp://keyserver.1:11371"); - Assert.equal(keyserverUris[1],"hkps://keyserver.2:443"); - Assert.equal(keyserverUris[2],"hkps://keyserver.3:443"); - Assert.equal(keyserverUris[3],"hkp://keyserver.3:11371"); - Assert.equal(keyserverUris[4],"hkps://keyserver.4:443"); - Assert.equal(keyserverUris[5],"ldap://keyserver.5:389"); + Assert.equal(keyserverUris[0], "hkp://keyserver.1:11371"); + Assert.equal(keyserverUris[1], "hkps://keyserver.2:443"); + Assert.equal(keyserverUris[2], "hkps://keyserver.3:443"); + Assert.equal(keyserverUris[3], "hkp://keyserver.3:11371"); + Assert.equal(keyserverUris[4], "hkps://keyserver.4:443"); + Assert.equal(keyserverUris[5], "ldap://keyserver.5:389"); })); @@ -64,8 +64,8 @@ const keyserverUris = buildKeyserverUris(); Assert.equal(keyserverUris.length, 2); - Assert.equal(keyserverUris[0],"hkps://hkps.pool.sks-keyservers.net:443"); - Assert.equal(keyserverUris[1],"hkp://pool.sks-keyservers.net:11371"); + Assert.equal(keyserverUris[0], "hkps://hkps.pool.sks-keyservers.net:443"); + Assert.equal(keyserverUris[1], "hkp://pool.sks-keyservers.net:11371"); }); })); @@ -76,30 +76,30 @@ const keyserverUris = buildKeyserverUris(); Assert.equal(keyserverUris.length, 2); - Assert.equal(keyserverUris[0],"hkps.pool.sks-keyservers.net"); - Assert.equal(keyserverUris[1],"hkp://pool.sks-keyservers.net:11371"); + Assert.equal(keyserverUris[0], "hkps://hkps.pool.sks-keyservers.net:443"); + Assert.equal(keyserverUris[1], "hkp://pool.sks-keyservers.net:11371"); }); })); -test(withPreferences(function should_AddProtocolAndPortForHkpsPoolServers_IfNotDos(){ +test(withPreferences(function should_AddProtocolAndPortForHkpsPoolServers_IfNotDos() { TestHelper.resetting(EnigmailOS, "isDosLike", false, function() { setupKeyserverPrefs("hkps.pool.sks-keyservers.net", false); const keyserverUris = buildKeyserverUris(); Assert.equal(keyserverUris.length, 1); - Assert.equal(keyserverUris[0],"hkps://hkps.pool.sks-keyservers.net:443"); + Assert.equal(keyserverUris[0], "hkps://hkps.pool.sks-keyservers.net:443"); }); })); -test(withPreferences(function shouldNot_AddProtocolAndPortForForHkpsPoolServers_IfDos(){ +test(withPreferences(function shouldNot_AddProtocolAndPortForForHkpsPoolServers_IfDos() { TestHelper.resetting(EnigmailOS, "isDosLike", true, function() { setupKeyserverPrefs("hkps.pool.sks-keyservers.net", false); const keyserverUris = buildKeyserverUris(); Assert.equal(keyserverUris.length, 1); - Assert.equal(keyserverUris[0],"hkps.pool.sks-keyservers.net"); + Assert.equal(keyserverUris[0], "hkps://hkps.pool.sks-keyservers.net:443"); }); })); diff -Nru enigmail-2.0.6/ui/content/autocryptInitiateBackup.js enigmail-2.0.7/ui/content/autocryptInitiateBackup.js --- enigmail-2.0.6/ui/content/autocryptInitiateBackup.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/autocryptInitiateBackup.js 2018-06-12 16:13:36.000000000 +0000 @@ -20,6 +20,8 @@ var gCurrentIdentity = null; function onLoad() { + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); gAccountList = document.getElementById("selectedAccount"); gAccountManager = Cc["@mozilla.org/messenger/account-manager;1"].getService(Ci.nsIMsgAccountManager); diff -Nru enigmail-2.0.6/ui/content/autocryptInitiateBackup.xul enigmail-2.0.7/ui/content/autocryptInitiateBackup.xul --- enigmail-2.0.6/ui/content/autocryptInitiateBackup.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/autocryptInitiateBackup.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; diff -Nru enigmail-2.0.6/ui/content/autocryptSetupPasswd.js enigmail-2.0.7/ui/content/autocryptSetupPasswd.js --- enigmail-2.0.6/ui/content/autocryptSetupPasswd.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/autocryptSetupPasswd.js 2018-06-12 16:13:36.000000000 +0000 @@ -17,6 +17,9 @@ var gInputArgs; function onLoad() { + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); + gInputArgs = window.arguments[0]; if (gInputArgs.dlgMode !== "input") { diff -Nru enigmail-2.0.6/ui/content/autocryptSetupPasswd.xul enigmail-2.0.7/ui/content/autocryptSetupPasswd.xul --- enigmail-2.0.6/ui/content/autocryptSetupPasswd.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/autocryptSetupPasswd.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; diff -Nru enigmail-2.0.6/ui/content/editSingleAccount.xul enigmail-2.0.7/ui/content/editSingleAccount.xul --- enigmail-2.0.6/ui/content/editSingleAccount.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/editSingleAccount.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; diff -Nru enigmail-2.0.6/ui/content/enigmailAddUidDlg.js enigmail-2.0.7/ui/content/enigmailAddUidDlg.js --- enigmail-2.0.6/ui/content/enigmailAddUidDlg.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAddUidDlg.js 2018-06-12 16:13:36.000000000 +0000 @@ -6,14 +6,21 @@ /* global Components: false */ - "use strict"; + +const Ci = Components.interfaces; + Components.utils.import("resource://enigmail/core.jsm"); /* global EnigmailCore: false */ Components.utils.import("resource://enigmail/keyEditor.jsm"); /* global EnigmailKeyEditor: false */ Components.utils.import("resource://enigmail/locale.jsm"); /* global EnigmailLocale: false */ Components.utils.import("resource://enigmail/data.jsm"); /* global EnigmailData: false */ Components.utils.import("resource://enigmail/dialog.jsm"); /* global EnigmailDialog: false */ +function onLoad() { + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); +} + function onAccept() { var name = document.getElementById("addUid_name"); var email = document.getElementById("addUid_email"); diff -Nru enigmail-2.0.6/ui/content/enigmailAddUidDlg.xul enigmail-2.0.7/ui/content/enigmailAddUidDlg.xul --- enigmail-2.0.6/ui/content/enigmailAddUidDlg.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAddUidDlg.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; @@ -18,6 +18,7 @@ diff -Nru enigmail-2.0.6/ui/content/enigmailAdvancedIdentityDlg.js enigmail-2.0.7/ui/content/enigmailAdvancedIdentityDlg.js --- enigmail-2.0.6/ui/content/enigmailAdvancedIdentityDlg.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAdvancedIdentityDlg.js 2018-06-12 16:13:36.000000000 +0000 @@ -4,12 +4,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* global EnigInitCommon: false */ +/* global Components: false, EnigInitCommon: false */ /* global ENIG_HEADERMODE_KEYID: false, ENIG_HEADERMODE_URL: false */ "use strict"; +const Ci = Components.interfaces; + EnigInitCommon("enigmailAdvancedIdentityDlg"); var gOpenPgpUrlName; @@ -18,6 +20,9 @@ var gOpenPgpSendKeyWithMsg; function onLoad() { + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); + gOpenPgpUrlName = document.getElementById("openpgpHeaderMode.url.name"); gOpenPgpHeaderKeyId = document.getElementById("openpgpHeaderMode.keyId"); gOpenPgpHeaderUrl = document.getElementById("openpgpHeaderMode.url"); diff -Nru enigmail-2.0.6/ui/content/enigmailAdvancedIdentityDlg.xul enigmail-2.0.7/ui/content/enigmailAdvancedIdentityDlg.xul --- enigmail-2.0.6/ui/content/enigmailAdvancedIdentityDlg.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAdvancedIdentityDlg.xul 2018-06-12 16:13:36.000000000 +0000 @@ -6,9 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + diff -Nru enigmail-2.0.6/ui/content/enigmailAttachmentsDialog.js enigmail-2.0.7/ui/content/enigmailAttachmentsDialog.js --- enigmail-2.0.6/ui/content/enigmailAttachmentsDialog.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAttachmentsDialog.js 2018-06-12 16:13:36.000000000 +0000 @@ -7,11 +7,12 @@ // Uses: chrome://enigmail/content/enigmailCommon.js -/* global EnigInitCommon: false, EnigSetPref: false, EnigGetPref: false */ +/* global Components: false, EnigInitCommon: false, EnigSetPref: false, EnigGetPref: false */ "use strict"; +const Ci = Components.interfaces; // Initialize enigmailCommon EnigInitCommon("enigmailAttachmentsDialog"); @@ -23,6 +24,8 @@ function enigmailAttachDlgLoad() { EnigmailLog.DEBUG("enigmailAttachmentsDialog.js: Load\n"); + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); var dialog = document.getElementById("attachmentsDialog"); dialog.setAttribute("title", EnigGetString("enigPrompt")); diff -Nru enigmail-2.0.6/ui/content/enigmailAttachmentsDialog.xul enigmail-2.0.7/ui/content/enigmailAttachmentsDialog.xul --- enigmail-2.0.6/ui/content/enigmailAttachmentsDialog.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailAttachmentsDialog.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; diff -Nru enigmail-2.0.6/ui/content/enigmailCardDetails.js enigmail-2.0.7/ui/content/enigmailCardDetails.js --- enigmail-2.0.6/ui/content/enigmailCardDetails.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailCardDetails.js 2018-06-12 16:13:36.000000000 +0000 @@ -8,6 +8,7 @@ "use strict"; +const Ci = Components.interfaces; Components.utils.import("resource://enigmail/funcs.jsm"); /*global EnigmailFuncs: false */ Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false */ @@ -25,6 +26,9 @@ var gCardData = {}; function onLoad() { + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); + var enigmailSvc = EnigmailCore.getService(window); if (!enigmailSvc) { EnigmailEvents.dispatchEvent(failWithError, 0, EnigmailLocale.getString("accessError")); diff -Nru enigmail-2.0.6/ui/content/enigmailCardDetails.xul enigmail-2.0.7/ui/content/enigmailCardDetails.xul --- enigmail-2.0.6/ui/content/enigmailCardDetails.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailCardDetails.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,11 +5,11 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + + %brandDTD; %enigMailDTD; diff -Nru enigmail-2.0.6/ui/content/enigmailConsole.js enigmail-2.0.7/ui/content/enigmailConsole.js --- enigmail-2.0.6/ui/content/enigmailConsole.js 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailConsole.js 2018-06-12 16:13:36.000000000 +0000 @@ -8,6 +8,8 @@ "use strict"; +const Ci = Components.interfaces; + Components.utils.import("resource://enigmail/core.jsm"); /*global EnigmailCore: false*/ Components.utils.import("resource://enigmail/pipeConsole.jsm"); /*global EnigmailConsole: false */ Components.utils.import("resource://enigmail/log.jsm"); /*global EnigmailLog: false */ @@ -20,6 +22,8 @@ function consoleLoad() { EnigmailLog.DEBUG("enigmailConsole.js: consoleLoad\n"); + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); top.controllers.insertControllerAt(0, CommandController); diff -Nru enigmail-2.0.6/ui/content/enigmailConsole.xul enigmail-2.0.7/ui/content/enigmailConsole.xul --- enigmail-2.0.6/ui/content/enigmailConsole.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailConsole.xul 2018-06-12 16:13:36.000000000 +0000 @@ -5,8 +5,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. --> - - + + diff -Nru enigmail-2.0.6/ui/content/enigmailCustToolOverlay.js enigmail-2.0.7/ui/content/enigmailCustToolOverlay.js --- enigmail-2.0.6/ui/content/enigmailCustToolOverlay.js 1970-01-01 00:00:00.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailCustToolOverlay.js 2018-06-12 16:13:36.000000000 +0000 @@ -0,0 +1,21 @@ +/*global Components: false */ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + + +"use strict"; + +var Enigmail = { + onLoad: function() { + // required for macOS only + const Ci = Components.interfaces; + + let domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils); + domWindowUtils.loadSheetUsingURIString("chrome://enigmail/skin/enigmail.css", 1); + } +}; + +Enigmail.onLoad(); diff -Nru enigmail-2.0.6/ui/content/enigmailCustToolOverlay.xul enigmail-2.0.7/ui/content/enigmailCustToolOverlay.xul --- enigmail-2.0.6/ui/content/enigmailCustToolOverlay.xul 2018-05-27 09:50:32.000000000 +0000 +++ enigmail-2.0.7/ui/content/enigmailCustToolOverlay.xul 2018-06-12 16:13:36.000000000 +0000 @@ -9,18 +9,11 @@ Toolbar window so that they are displayed correctly --> - - - - - - - - + +