diff -Nru thunderbird-60.5.1+build2/comm/mail/components/addrbook/content/addressbook.xul thunderbird-60.5.3+build1/comm/mail/components/addrbook/content/addressbook.xul
--- thunderbird-60.5.1+build2/comm/mail/components/addrbook/content/addressbook.xul 2019-02-19 13:46:56.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/components/addrbook/content/addressbook.xul 2019-03-05 06:14:39.000000000 +0000
@@ -777,7 +777,7 @@
-
+
diff -Nru thunderbird-60.5.1+build2/comm/mail/components/compose/content/messengercompose.xul thunderbird-60.5.3+build1/comm/mail/components/compose/content/messengercompose.xul
--- thunderbird-60.5.1+build2/comm/mail/components/compose/content/messengercompose.xul 2019-02-19 13:46:56.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/components/compose/content/messengercompose.xul 2019-03-05 06:14:39.000000000 +0000
@@ -1338,7 +1338,7 @@
-
+
diff -Nru thunderbird-60.5.1+build2/comm/mail/config/version_display.txt thunderbird-60.5.3+build1/comm/mail/config/version_display.txt
--- thunderbird-60.5.1+build2/comm/mail/config/version_display.txt 2019-02-19 13:46:58.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/config/version_display.txt 2019-03-05 06:14:39.000000000 +0000
@@ -1 +1 @@
-60.5.1
+60.5.3
diff -Nru thunderbird-60.5.1+build2/comm/mail/config/version.txt thunderbird-60.5.3+build1/comm/mail/config/version.txt
--- thunderbird-60.5.1+build2/comm/mail/config/version.txt 2019-02-19 13:46:58.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/config/version.txt 2019-03-05 06:14:39.000000000 +0000
@@ -1 +1 @@
-60.5.1
+60.5.3
diff -Nru thunderbird-60.5.1+build2/comm/mail/installer/windows/nsis/shared.nsh thunderbird-60.5.3+build1/comm/mail/installer/windows/nsis/shared.nsh
--- thunderbird-60.5.1+build2/comm/mail/installer/windows/nsis/shared.nsh 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/installer/windows/nsis/shared.nsh 2019-03-05 06:14:39.000000000 +0000
@@ -19,6 +19,9 @@
; Win7 taskbar and start menu link maintenance
Call FixShortcutAppModelIDs
+ ; Upgrade the copies of the MAPI DLL's
+ ${UpgradeMapiDLLs}
+
ClearErrors
WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
${If} ${Errors}
@@ -358,6 +361,7 @@
WriteRegStr ${RegKey} "$0" "" "${ClientsRegName}"
WriteRegStr ${RegKey} "$0\DefaultIcon" "" "$8,0"
WriteRegStr ${RegKey} "$0" "DLLPath" "$6"
+ WriteRegDWORD ${RegKey} "$0" "SupportUTF8" 0
; The MapiProxy dll can exist in multiple installs of the application.
; Registration occurs as follows with the last action to occur being the one
diff -Nru thunderbird-60.5.1+build2/comm/mail/themes/shared/mail/messenger.css thunderbird-60.5.3+build1/comm/mail/themes/shared/mail/messenger.css
--- thunderbird-60.5.1+build2/comm/mail/themes/shared/mail/messenger.css 2019-02-19 13:46:58.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mail/themes/shared/mail/messenger.css 2019-03-05 06:14:39.000000000 +0000
@@ -175,6 +175,11 @@
color: GrayText;
}
+toolbarpaletteitem toolbarspacer,
+toolbarpaletteitem toolbarspring {
+ -moz-window-dragging: no-drag;
+}
+
/* :::: autocomplete labels :::: */
html|span.ac-emphasize-text {
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapiDll/MapiDll.cpp thunderbird-60.5.3+build1/comm/mailnews/mapi/mapiDll/MapiDll.cpp
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapiDll/MapiDll.cpp 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapiDll/MapiDll.cpp 2019-03-05 06:14:40.000000000 +0000
@@ -5,7 +5,6 @@
#pragma warning (disable : 4996) // MAPILogoff is deprecated
#include
-#include
#include
#include
#include "msgMapi.h"
@@ -109,9 +108,9 @@
// store and address book providers ////
////////////////////////////////////////////////////////////////////////////////////////
-ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPTSTR aProfileName,
- LPTSTR aPassword, FLAGS aFlags,
- ULONG aReserved, LPLHANDLE aSession)
+ULONG FAR PASCAL MAPILogon(ULONG aUIParam, LPSTR aProfileName,
+ LPSTR aPassword, FLAGS aFlags,
+ ULONG aReserved, LPLHANDLE aSession)
{
HRESULT hr = 0;
ULONG nSessionId = 0;
@@ -120,36 +119,7 @@
if (!InitMozillaReference(&pNsMapi))
return MAPI_E_FAILURE;
- if (!(aFlags & MAPI_UNICODE))
- {
- // Need to convert the parameters to Unicode.
-
- char *pUserName = (char *) aProfileName;
- char *pPassWord = (char *) aPassword;
-
- TCHAR ProfileName[MAX_NAME_LEN] = {0};
- TCHAR PassWord[MAX_PW_LEN] = {0};
-
- if (pUserName != NULL)
- {
- if (!MultiByteToWideChar(CP_ACP, 0, pUserName, -1, ProfileName,
- MAX_NAME_LEN))
- return MAPI_E_FAILURE;
- }
-
- if (pPassWord != NULL)
- {
- if (!MultiByteToWideChar(CP_ACP, 0, pPassWord, -1, PassWord,
- MAX_NAME_LEN))
- return MAPI_E_FAILURE;
- }
-
- hr = pNsMapi->Login(aUIParam, ProfileName, PassWord, aFlags,
- &nSessionId);
- }
- else
- hr = pNsMapi->Login(aUIParam, aProfileName, aPassword,
- aFlags, &nSessionId);
+ hr = pNsMapi->Login(aUIParam, aProfileName, aPassword, aFlags, &nSessionId);
if (hr == S_OK)
(*aSession) = (LHANDLE) nSessionId;
else
@@ -203,46 +173,13 @@
else if (flFlags & MAPI_LOGON_UI)
LoginFlag = MAPI_LOGON_UI ;
- hr = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, LoginFlag, 0, &lhSession) ;
+ hr = MAPILogon(ulUIParam, nullptr, nullptr, LoginFlag, 0, &lhSession);
if (hr != SUCCESS_SUCCESS)
return MAPI_E_LOGIN_FAILURE ;
bTempSession = TRUE ;
}
- // we need to deal with null data passed in by MAPI clients, specially when MAPI_DIALOG is set.
- // The MS COM type lib code generated by MIDL for the MS COM interfaces checks for these parameters
- // to be non null, although null is a valid value for them here.
- nsMapiRecipDesc * lpRecips ;
- nsMapiFileDesc * lpFiles ;
-
- nsMapiMessage Message ;
- memset (&Message, 0, sizeof (nsMapiMessage) ) ;
- nsMapiRecipDesc Recipient ;
- memset (&Recipient, 0, sizeof (nsMapiRecipDesc) );
- nsMapiFileDesc Files ;
- memset (&Files, 0, sizeof (nsMapiFileDesc) ) ;
-
- if(!lpMessage)
- {
- lpMessage = &Message ;
- }
- if(!lpMessage->lpRecips)
- {
- lpRecips = &Recipient ;
- }
- else
- lpRecips = lpMessage->lpRecips ;
- if(!lpMessage->lpFiles)
- {
- lpFiles = &Files ;
- }
- else
- lpFiles = lpMessage->lpFiles ;
-
- hr = pNsMapi->SendMail (lhSession, lpMessage,
- (short) lpMessage->nRecipCount, lpRecips,
- (short) lpMessage->nFileCount, lpFiles,
- flFlags, ulReserved);
+ hr = pNsMapi->SendMail(lhSession, lpMessage, flFlags, ulReserved);
// we are seeing a problem when using Word, although we return success from the MAPI support
// MS COM interface in mozilla, we are getting this error here. This is a temporary hack !!
@@ -256,8 +193,8 @@
}
-ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPTSTR lpszDelimChar, LPTSTR lpszFilePaths,
- LPTSTR lpszFileNames, ULONG ulReserved)
+ULONG FAR PASCAL MAPISendDocuments(ULONG ulUIParam, LPSTR lpszDelimChar, LPSTR lpszFilePaths,
+ LPSTR lpszFileNames, ULONG ulReserved)
{
LHANDLE lhSession ;
nsIMapi *pNsMapi = NULL;
@@ -265,22 +202,21 @@
if (!InitMozillaReference(&pNsMapi))
return MAPI_E_FAILURE;
- unsigned long result = MAPILogon (ulUIParam, (LPTSTR) NULL, (LPTSTR) NULL, MAPI_LOGON_UI, 0, &lhSession) ;
+ unsigned long result = MAPILogon(ulUIParam, nullptr, nullptr, MAPI_LOGON_UI, 0, &lhSession);
if (result != SUCCESS_SUCCESS)
return MAPI_E_LOGIN_FAILURE ;
HRESULT hr;
- hr = pNsMapi->SendDocuments(lhSession, (LPTSTR) lpszDelimChar, (LPTSTR) lpszFilePaths,
- (LPTSTR) lpszFileNames, ulReserved) ;
+ hr = pNsMapi->SendDocuments(lhSession, lpszDelimChar, lpszFilePaths, lpszFileNames, ulReserved);
MAPILogoff (lhSession, ulUIParam, 0,0) ;
return hr ;
}
-ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPTSTR lpszMessageType,
- const LPTSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
+ULONG FAR PASCAL MAPIFindNext(LHANDLE lhSession, ULONG ulUIParam, const LPSTR lpszMessageType,
+ const LPSTR lpszSeedMessageID, FLAGS flFlags, ULONG ulReserved,
unsigned char lpszMessageID[64])
{
nsIMapi *pNsMapi = NULL;
@@ -291,14 +227,12 @@
if (lhSession == 0)
return MAPI_E_INVALID_SESSION;
- const LPTSTR type = lpszMessageType ? lpszMessageType : (const LPTSTR)(L"");
- const LPTSTR id = lpszSeedMessageID ? lpszSeedMessageID : (const LPTSTR)(L"");
- return pNsMapi->FindNext(lhSession, ulUIParam, type, id,
+ return pNsMapi->FindNext(lhSession, ulUIParam, lpszMessageType, lpszSeedMessageID,
flFlags, ulReserved, lpszMessageID);
}
-ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
+ULONG FAR PASCAL MAPIReadMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
FLAGS flFlags, ULONG ulReserved, nsMapiMessage **lppMessage)
{
nsIMapi *pNsMapi = NULL;
@@ -316,7 +250,7 @@
}
ULONG FAR PASCAL MAPISaveMail(LHANDLE lhSession, ULONG ulUIParam, lpnsMapiMessage lpMessage,
- FLAGS flFlags, ULONG ulReserved, LPTSTR lpszMessageID)
+ FLAGS flFlags, ULONG ulReserved, LPSTR lpszMessageID)
{
nsIMapi *pNsMapi = NULL;
@@ -329,7 +263,7 @@
return MAPI_E_FAILURE;
}
-ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszMessageID,
+ULONG FAR PASCAL MAPIDeleteMail(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszMessageID,
FLAGS flFlags, ULONG ulReserved)
{
nsIMapi *pNsMapi = NULL;
@@ -344,8 +278,8 @@
lpszMessageID, flFlags, ulReserved) ;
}
-ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszCaption,
- ULONG nEditFields, LPTSTR lpszLabels, ULONG nRecips,
+ULONG FAR PASCAL MAPIAddress(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszCaption,
+ ULONG nEditFields, LPSTR lpszLabels, ULONG nRecips,
lpMapiRecipDesc lpRecips, FLAGS flFlags,
ULONG ulReserved, LPULONG lpnNewRecips,
lpMapiRecipDesc FAR *lppNewRecips)
@@ -359,7 +293,7 @@
return MAPI_E_NOT_SUPPORTED;
}
-ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPTSTR lpszName,
+ULONG FAR PASCAL MAPIResolveName(LHANDLE lhSession, ULONG ulUIParam, LPSTR lpszName,
FLAGS flFlags, ULONG ulReserved, lpMapiRecipDesc FAR *lppRecip)
{
char* lpszRecipName = new char[(strlen((const char*)lpszName) + 1)];
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/build/msgMapi.idl thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/build/msgMapi.idl
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/build/msgMapi.idl 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/build/msgMapi.idl 2019-03-05 06:14:40.000000000 +0000
@@ -7,15 +7,13 @@
import "unknwn.idl";
-typedef wchar_t LOGIN_PW_TYPE[256];
-
typedef struct
{
unsigned long ulReserved;
unsigned long flFlags; /* Flags */
unsigned long nPosition_NotUsed; /* character in text to be replaced by attachment */
- LPTSTR lpszPathName; /* Full path name including file name */
- LPTSTR lpszFileName; /* Real (original) file name */
+ LPSTR lpszPathName; /* Full path name including file name */
+ LPSTR lpszFileName; /* Real (original) file name */
unsigned char * lpFileType_NotUsed ;
} nsMapiFileDesc, * lpnsMapiFileDesc;
@@ -55,8 +53,8 @@
interface nsIMapi : IUnknown
{
- HRESULT Login([in] unsigned long aUIArg, [in, unique] LOGIN_PW_TYPE aLogin,
- [in, unique] LOGIN_PW_TYPE aPassWord, [in] unsigned long aFlags,
+ HRESULT Login([in] unsigned long aUIArg, [in, unique, max_is(256)] LPSTR aLogin,
+ [in, unique, max_is(256)] LPSTR aPassWord, [in] unsigned long aFlags,
[out] unsigned long *aSessionId);
HRESULT Initialize();
@@ -64,26 +62,24 @@
HRESULT IsValidSession([in] unsigned long aSession);
HRESULT SendMail([in] unsigned long aSession, [in, unique] lpnsMapiMessage aMessage,
- [in] short aRecipCount, [in, size_is(aRecipCount)] lpnsMapiRecipDesc aRecips,
- [in] short aFileCount, [in, size_is(aFileCount)] lpnsMapiFileDesc aFiles,
[in] unsigned long aFlags, [in] unsigned long aReserved) ;
HRESULT SendDocuments([in] unsigned long aSession,
- [in, unique] LPTSTR aDelimChar, [in, unique] LPTSTR aFilePaths,
- [in, unique] LPTSTR aFileNames, [in] ULONG aFlags ) ;
+ [in, unique] LPSTR aDelimChar, [in, unique] LPSTR aFilePaths,
+ [in, unique] LPSTR aFileNames, [in] ULONG aFlags);
- HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPTSTR lpszMessageType,
- [in, unique] const LPTSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
+ HRESULT FindNext([in] unsigned long aSession, [in] ULONG ulUIParam, [in, unique] const LPSTR lpszMessageType,
+ [in, unique] const LPSTR lpszSeedMessageID, [in] ULONG flFlags, [in] ULONG ulReserved,
[in] [out] char lpszMessageID[64] ) ;
- HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
+ HRESULT ReadMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
[in] ULONG flFlags, [in] ULONG ulReserved, [out] lpnsMapiMessage *lppMessage);
- HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPTSTR lpszMessageID,
+ HRESULT DeleteMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] LPSTR lpszMessageID,
[in] ULONG flFlags, [in] ULONG ulReserved);
HRESULT SaveMail([in] unsigned long lhSession, [in] ULONG ulUIParam, [in, unique] lpnsMapiMessage lppMessage,
- [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPTSTR lpszMessageID);
+ [in] ULONG flFlags, [in] ULONG ulReserved, [in, unique] LPSTR lpszMessageID);
HRESULT Logoff(unsigned long aSession);
HRESULT CleanUp();
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiHook.cpp 2019-03-05 06:14:40.000000000 +0000
@@ -6,7 +6,6 @@
#include
#include
-#include
#include
#include "nsCOMPtr.h"
#include "nsIComponentManager.h"
@@ -179,7 +178,7 @@
return btnResult;
}
-bool nsMapiHook::VerifyUserName(const nsString& aUsername, nsCString& aIdKey)
+bool nsMapiHook::VerifyUserName(const nsCString& aUsername, nsCString& aIdKey)
{
nsresult rv;
@@ -209,7 +208,7 @@
if (index != -1)
email.SetLength(index);
- if (aUsername.Equals(NS_ConvertASCIItoUTF16(email)))
+ if (aUsername.Equals(email))
return NS_SUCCEEDED(thisIdentity->GetKey(aIdKey));
}
}
@@ -349,91 +348,13 @@
return rv ;
}
-// this is used to populate comp fields with Unicode data
-nsresult nsMapiHook::PopulateCompFields(lpnsMapiMessage aMessage,
- nsIMsgCompFields * aCompFields)
-{
- nsresult rv = NS_OK ;
-
- if (aMessage->lpOriginator)
- aCompFields->SetFrom (NS_ConvertASCIItoUTF16((char *) aMessage->lpOriginator->lpszAddress));
-
- nsAutoString To ;
- nsAutoString Cc ;
- nsAutoString Bcc ;
-
- NS_NAMED_LITERAL_STRING(Comma, ",");
-
- if (aMessage->lpRecips)
- {
- for (int i=0 ; i < (int) aMessage->nRecipCount ; i++)
- {
- if (aMessage->lpRecips[i].lpszAddress || aMessage->lpRecips[i].lpszName)
- {
- const char *addressWithoutType = (aMessage->lpRecips[i].lpszAddress)
- ? aMessage->lpRecips[i].lpszAddress : aMessage->lpRecips[i].lpszName;
- if (!PL_strncasecmp(addressWithoutType, "SMTP:", 5))
- addressWithoutType += 5;
- switch (aMessage->lpRecips[i].ulRecipClass)
- {
- case MAPI_TO :
- if (!To.IsEmpty())
- To += Comma;
- To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
-
- case MAPI_CC :
- if (!Cc.IsEmpty())
- Cc += Comma;
- Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
-
- case MAPI_BCC :
- if (!Bcc.IsEmpty())
- Bcc += Comma;
- Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
- break;
- }
- }
- }
- }
-
- MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("to: %s cc: %s bcc: %s \n", NS_ConvertUTF16toUTF8(To).get(), NS_ConvertUTF16toUTF8(Cc).get(), NS_ConvertUTF16toUTF8(Bcc).get()));
- // set To, Cc, Bcc
- aCompFields->SetTo (To) ;
- aCompFields->SetCc (Cc) ;
- aCompFields->SetBcc (Bcc) ;
-
- // set subject
- if (aMessage->lpszSubject)
- aCompFields->SetSubject(NS_ConvertASCIItoUTF16(aMessage->lpszSubject));
-
- // handle attachments as File URL
- rv = HandleAttachments (aCompFields, aMessage->nFileCount, aMessage->lpFiles, true) ;
- if (NS_FAILED(rv)) return rv ;
-
- // set body
- if (aMessage->lpszNoteText)
- {
- nsString Body;
- CopyASCIItoUTF16(aMessage->lpszNoteText, Body);
- if (Body.IsEmpty() || Body.Last() != '\n')
- Body.AppendLiteral(CRLF);
-
- // This is needed when Simple MAPI is used without a compose window.
- // See bug 1366196.
- if (Body.Find("") == kNotFound)
- aCompFields->SetForcePlainText(true);
-
- rv = aCompFields->SetBody(Body) ;
- }
- return rv ;
-}
-
nsresult nsMapiHook::HandleAttachments (nsIMsgCompFields * aCompFields, int32_t aFileCount,
- lpnsMapiFileDesc aFiles, BOOL aIsUnicode)
+ lpnsMapiFileDesc aFiles, bool aIsUTF8)
{
nsresult rv = NS_OK ;
+ // Do nothing if there are no files to process.
+ if (!aFiles || aFileCount <= 0)
+ return NS_OK;
nsAutoCString Attachments ;
nsAutoCString TempFiles ;
@@ -448,14 +369,17 @@
if (aFiles[i].lpszPathName)
{
// check if attachment exists
- if (aIsUnicode)
- pFile->InitWithPath (nsDependentString(aFiles[i].lpszPathName));
+ if (!aIsUTF8)
+ pFile->InitWithNativePath(nsDependentCString(aFiles[i].lpszPathName));
else
- pFile->InitWithNativePath (nsDependentCString((const char*)aFiles[i].lpszPathName));
+ pFile->InitWithPath(NS_ConvertUTF8toUTF16(aFiles[i].lpszPathName));
bool bExist ;
rv = pFile->Exists(&bExist) ;
- MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("nsMapiHook::HandleAttachments: filename: %s path: %s exists = %s \n", (const char*)aFiles[i].lpszFileName, (const char*)aFiles[i].lpszPathName, bExist ? "true" : "false"));
+ MOZ_LOG(MAPI, mozilla::LogLevel::Debug,
+ ("nsMapiHook::HandleAttachments: filename: %s path: %s exists = %s\n",
+ (const char*)aFiles[i].lpszFileName,
+ (const char*)aFiles[i].lpszPathName, bExist ? "true" : "false"));
if (NS_FAILED(rv) || (!bExist) ) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
//Temp Directory
@@ -479,12 +403,12 @@
// a value for lpszFileName, use it. Otherwise stick with leafName
if (aFiles[i].lpszFileName)
{
- nsAutoString wholeFileName;
- if (aIsUnicode)
- wholeFileName.Assign(aFiles[i].lpszFileName);
- else
- NS_CopyNativeToUnicode(nsDependentCString((char *) aFiles[i].lpszFileName),
+ nsAutoString wholeFileName;
+ if (!aIsUTF8)
+ NS_CopyNativeToUnicode(nsDependentCString(aFiles[i].lpszFileName),
wholeFileName);
+ else
+ wholeFileName.Append(NS_ConvertUTF8toUTF16(aFiles[i].lpszFileName));
// need to find the last '\' and find the leafname from that.
int32_t lastSlash = wholeFileName.RFindChar(char16_t('\\'));
if (lastSlash != kNotFound)
@@ -547,11 +471,15 @@
nsIMsgCompFields * aCompFields)
{
nsresult rv = NS_OK;
+ bool isUTF8 = aMessage->ulReserved == CP_UTF8;
if (aMessage->lpOriginator)
{
nsAutoString From;
- From.Append(NS_ConvertASCIItoUTF16((char *) aMessage->lpOriginator->lpszAddress));
+ if (!isUTF8)
+ From.Append(NS_ConvertASCIItoUTF16(aMessage->lpOriginator->lpszAddress));
+ else
+ From.Append(NS_ConvertUTF8toUTF16(aMessage->lpOriginator->lpszAddress));
aCompFields->SetFrom (From);
}
@@ -575,19 +503,28 @@
case MAPI_TO :
if (!To.IsEmpty())
To += Comma ;
- To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ To.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ To.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
case MAPI_CC :
if (!Cc.IsEmpty())
Cc += Comma ;
- Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ Cc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ Cc.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
case MAPI_BCC :
if (!Bcc.IsEmpty())
Bcc += Comma ;
- Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ if (!isUTF8)
+ Bcc.Append(NS_ConvertASCIItoUTF16(addressWithoutType));
+ else
+ Bcc.Append(NS_ConvertUTF8toUTF16(addressWithoutType));
break ;
}
}
@@ -605,22 +542,28 @@
if (aMessage->lpszSubject)
{
nsAutoString Subject ;
- rv = NS_CopyNativeToUnicode(nsDependentCString((char *) aMessage->lpszSubject),
- Subject);
+ if (!isUTF8)
+ rv = NS_CopyNativeToUnicode(nsDependentCString(aMessage->lpszSubject),
+ Subject);
+ else
+ Subject.Append(NS_ConvertUTF8toUTF16(aMessage->lpszSubject));
if (NS_FAILED(rv)) return rv;
aCompFields->SetSubject(Subject);
}
// handle attachments as File URL
- rv = HandleAttachments (aCompFields, aMessage->nFileCount, aMessage->lpFiles, false) ;
+ rv = HandleAttachments(aCompFields, aMessage->nFileCount, aMessage->lpFiles, isUTF8);
if (NS_FAILED(rv)) return rv ;
// set body
if (aMessage->lpszNoteText)
{
nsAutoString Body ;
- rv = NS_CopyNativeToUnicode(nsDependentCString((char *) aMessage->lpszNoteText),
- Body);
+ if (!isUTF8)
+ rv = NS_CopyNativeToUnicode(nsDependentCString(aMessage->lpszNoteText),
+ Body);
+ else
+ Body.Append(NS_ConvertUTF8toUTF16(aMessage->lpszNoteText));
if (NS_FAILED(rv)) return rv ;
if (Body.IsEmpty() || Body.Last() != '\n')
Body.AppendLiteral(CRLF);
@@ -645,10 +588,10 @@
// this is used to populate the docs as attachments in the Comp fields for Send Documents
nsresult nsMapiHook::PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields, ULONG aFlags,
- LPTSTR aDelimChar, LPTSTR aFilePaths)
+ LPSTR aDelimChar, LPSTR aFilePaths)
{
- nsAutoString strDelimChars ;
- nsString strFilePaths;
+ nsAutoCString strDelimChars;
+ nsAutoCString strFilePaths;
nsresult rv = NS_OK ;
bool bExist ;
@@ -680,7 +623,7 @@
nsCOMPtr pFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID, &rv) ;
if (NS_FAILED(rv) || (!pFile) ) return rv ;
- char16_t * newFilePaths = (char16_t *) strFilePaths.get() ;
+ char *newFilePaths = (char *)strFilePaths.get();
while (offset != kNotFound)
{
//Temp Directory
@@ -697,7 +640,7 @@
if (NS_FAILED(rv)) return rv ;
}
- nsString RemainingPaths ;
+ nsAutoCString RemainingPaths;
RemainingPaths.Assign(newFilePaths) ;
offset = RemainingPaths.Find (strDelimChars) ;
if (offset != kNotFound)
@@ -715,14 +658,14 @@
char cwd[MAX_PATH];
if (_getdcwd(_getdrive(), cwd, MAX_PATH))
{
- nsAutoString cwdStr;
- CopyASCIItoUTF16(cwd, cwdStr);
+ nsAutoCString cwdStr;
+ cwdStr.Assign(cwd);
cwdStr.Append('\\');
RemainingPaths.Insert(cwdStr, 0);
}
}
- pFile->InitWithPath (RemainingPaths) ;
+ pFile->InitWithNativePath(RemainingPaths);
rv = pFile->Exists(&bExist) ;
if (NS_FAILED(rv) || (!bExist) ) return NS_ERROR_FILE_TARGET_DOES_NOT_EXIST ;
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiHook.h thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiHook.h
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiHook.h 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiHook.h 2019-03-05 06:14:40.000000000 +0000
@@ -13,18 +13,17 @@
static bool DisplayLoginDialog(bool aLogin, char16_t **aUsername,
char16_t **aPassword);
- static bool VerifyUserName(const nsString& aUsername, nsCString& aIdKey);
+ static bool VerifyUserName(const nsCString& aUsername, nsCString& aIdKey);
static bool IsBlindSendAllowed () ;
static nsresult BlindSendMail (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
static nsresult ShowComposerWindow (unsigned long aSession, nsIMsgCompFields * aCompFields) ;
- static nsresult PopulateCompFields(lpnsMapiMessage aMessage, nsIMsgCompFields * aCompFields) ;
static nsresult PopulateCompFieldsWithConversion(lpnsMapiMessage aMessage,
nsIMsgCompFields * aCompFields) ;
static nsresult PopulateCompFieldsForSendDocs(nsIMsgCompFields * aCompFields,
- ULONG aFlags, LPTSTR aDelimChar, LPTSTR aFilePaths) ;
- static nsresult HandleAttachments (nsIMsgCompFields * aCompFields, int32_t aFileCount,
- lpnsMapiFileDesc aFiles, BOOL aIsUnicode) ;
+ ULONG aFlags, LPSTR aDelimChar, LPSTR aFilePaths);
+ static nsresult HandleAttachments(nsIMsgCompFields *aCompFields, int32_t aFileCount,
+ lpnsMapiFileDesc aFiles, bool aIsUTF8);
static void CleanUp();
static bool isMapiService;
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiImp.cpp 2019-03-05 06:14:40.000000000 +0000
@@ -121,8 +121,8 @@
return hr;
}
-STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin, LOGIN_PW_TYPE aPassWord,
- unsigned long aFlags, unsigned long *aSessionId)
+STDMETHODIMP CMapiImp::Login(unsigned long aUIArg, LPSTR aLogin, LPSTR aPassWord,
+ unsigned long aFlags, unsigned long *aSessionId)
{
HRESULT hr = E_FAIL;
bool bNewSession = false;
@@ -135,7 +135,7 @@
// Check For Profile Name
if (aLogin != nullptr && aLogin[0] != '\0')
{
- if (!nsMapiHook::VerifyUserName(nsString(aLogin), id_key))
+ if (!nsMapiHook::VerifyUserName(nsDependentCString(aLogin), id_key))
{
*aSessionId = MAPI_E_LOGIN_FAILURE;
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::Login failed for username %s\n", aLogin));
@@ -167,9 +167,11 @@
nsMAPIConfiguration *pConfig = nsMAPIConfiguration::GetMAPIConfiguration();
if (pConfig != nullptr)
- nResult = pConfig->RegisterSession(aUIArg, char16ptr_t(aLogin), char16ptr_t(aPassWord),
- (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
- &nSession_Id, id_key.get());
+ nResult = pConfig->RegisterSession(aUIArg,
+ aLogin ? nsDependentCString(aLogin) : EmptyCString(),
+ aPassWord ? nsDependentCString(aPassWord) : EmptyCString(),
+ (aFlags & MAPI_FORCE_DOWNLOAD), bNewSession,
+ &nSession_Id, id_key.get());
switch (nResult)
{
case -1 :
@@ -194,16 +196,20 @@
}
STDMETHODIMP CMapiImp::SendMail( unsigned long aSession, lpnsMapiMessage aMessage,
- short aRecipCount, lpnsMapiRecipDesc aRecips , short aFileCount, lpnsMapiFileDesc aFiles ,
unsigned long aFlags, unsigned long aReserved)
{
nsresult rv = NS_OK ;
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMail using flags %d\n", aFlags));
- // Assign the pointers in the aMessage struct to the array of Recips and Files
- // received here from MS COM. These are used in BlindSendMail and ShowCompWin fns
- aMessage->lpRecips = aRecips ;
- aMessage->lpFiles = aFiles ;
+
+ // Handle possible nullptr argument.
+ nsMapiMessage Message;
+ memset(&Message, 0, sizeof(nsMapiMessage));
+
+ if (!aMessage)
+ {
+ aMessage = &Message;
+ }
MOZ_LOG(MAPI, mozilla::LogLevel::Debug, ("CMapiImp::SendMail flags=%x subject: %s sender: %s\n",
aFlags, (char *) aMessage->lpszSubject, (aMessage->lpOriginator) ? aMessage->lpOriginator->lpszAddress : ""));
@@ -212,10 +218,7 @@
nsCOMPtr pCompFields = do_CreateInstance(NS_MSGCOMPFIELDS_CONTRACTID, &rv) ;
if (NS_FAILED(rv) || (!pCompFields) ) return MAPI_E_INSUFFICIENT_MEMORY ;
- if (aFlags & MAPI_UNICODE)
- rv = nsMapiHook::PopulateCompFields(aMessage, pCompFields) ;
- else
- rv = nsMapiHook::PopulateCompFieldsWithConversion(aMessage, pCompFields) ;
+ rv = nsMapiHook::PopulateCompFieldsWithConversion(aMessage, pCompFields);
if (NS_SUCCEEDED (rv))
{
@@ -234,8 +237,8 @@
}
-STDMETHODIMP CMapiImp::SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
- LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags)
+STDMETHODIMP CMapiImp::SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+ LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags)
{
nsresult rv = NS_OK ;
@@ -364,9 +367,9 @@
return SUCCESS_SUCCESS;
}
-STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
- LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
- unsigned char lpszMessageID[64])
+STDMETHODIMP CMapiImp::FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
+ LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
+ unsigned char lpszMessageID[64])
{
//
@@ -409,8 +412,8 @@
return(SUCCESS_SUCCESS);
}
-STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
+STDMETHODIMP CMapiImp::ReadMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage)
{
nsresult irv;
nsAutoCString keyString((char *) lpszMessageID);
@@ -435,8 +438,8 @@
}
-STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved)
+STDMETHODIMP CMapiImp::DeleteMail(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved)
{
nsresult irv;
nsAutoCString keyString((char *) lpszMessageID);
@@ -451,8 +454,8 @@
return (listContext->DeleteMessage(msgKey)) ? SUCCESS_SUCCESS : MAPI_E_INVALID_MESSAGE;
}
-STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
- unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID)
+STDMETHODIMP CMapiImp::SaveMail(unsigned long aSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
+ unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID)
{
MsgMapiListContext *listContext;
LONG ret = InitContext(aSession, &listContext);
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiImp.h thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiImp.h
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiImp.h 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiImp.h 2019-03-05 06:14:40.000000000 +0000
@@ -33,28 +33,26 @@
// Interface INsMapi
- STDMETHODIMP Login(unsigned long aUIArg, LOGIN_PW_TYPE aLogin,
- LOGIN_PW_TYPE aPassWord, unsigned long aFlags,
+ STDMETHODIMP Login(unsigned long aUIArg, LPSTR aLogin,
+ LPSTR aPassWord, unsigned long aFlags,
unsigned long *aSessionId);
- STDMETHODIMP SendMail( unsigned long aSession, lpnsMapiMessage aMessage,
- short aRecipCount, lpnsMapiRecipDesc aRecips ,
- short aFileCount, lpnsMapiFileDesc aFiles ,
- unsigned long aFlags, unsigned long aReserved) ;
-
- STDMETHODIMP SendDocuments( unsigned long aSession, LPTSTR aDelimChar,
- LPTSTR aFilePaths, LPTSTR aFileNames, ULONG aFlags);
-
- STDMETHODIMP FindNext( unsigned long aSession, unsigned long ulUIParam, LPTSTR lpszMessageType,
- LPTSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
- unsigned char lpszMessageID[64] );
-
- STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
- STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPTSTR lpszMessageID,
- unsigned long flFlags, unsigned long ulReserved);
+ STDMETHODIMP SendMail(unsigned long aSession, lpnsMapiMessage aMessage,
+ unsigned long aFlags, unsigned long aReserved);
+
+ STDMETHODIMP SendDocuments(unsigned long aSession, LPSTR aDelimChar,
+ LPSTR aFilePaths, LPSTR aFileNames, ULONG aFlags);
+
+ STDMETHODIMP FindNext(unsigned long aSession, unsigned long ulUIParam, LPSTR lpszMessageType,
+ LPSTR lpszSeedMessageID, unsigned long flFlags, unsigned long ulReserved,
+ unsigned char lpszMessageID[64]);
+
+ STDMETHODIMP ReadMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved, lpnsMapiMessage *lppMessage);
+ STDMETHODIMP DeleteMail(unsigned long lhSession, unsigned long ulUIParam, LPSTR lpszMessageID,
+ unsigned long flFlags, unsigned long ulReserved);
STDMETHODIMP SaveMail(unsigned long lhSession, unsigned long ulUIParam, lpnsMapiMessage lppMessage,
- unsigned long flFlags, unsigned long ulReserved, LPTSTR lpszMessageID);
+ unsigned long flFlags, unsigned long ulReserved, LPSTR lpszMessageID);
STDMETHODIMP Initialize();
STDMETHODIMP IsValid();
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiMain.cpp 2019-03-05 06:14:40.000000000 +0000
@@ -46,7 +46,7 @@
}
int16_t nsMAPIConfiguration::RegisterSession(uint32_t aHwnd,
- const char16_t *aUserName, const char16_t *aPassword,
+ const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, bool aNewSession,
uint32_t *aSession, const char *aIdKey)
{
@@ -63,8 +63,8 @@
return -1;
}
- if (aUserName != nullptr && aUserName[0] != '\0')
- m_ProfileMap.Get(nsDependentString(aUserName), &n_SessionId);
+ if (!aUserName.IsEmpty())
+ m_ProfileMap.Get(aUserName, &n_SessionId);
// try to share a session; if not create a session
if (n_SessionId > 0)
@@ -82,8 +82,7 @@
{
// create a new session; if new session is specified OR there is no session
nsMAPISession *pTemp = nullptr;
- pTemp = new nsMAPISession(aHwnd, aUserName,
- aPassword, aForceDownLoad, aIdKey);
+ pTemp = new nsMAPISession(aHwnd, aUserName, aPassword, aForceDownLoad, aIdKey);
if (pTemp != nullptr)
{
@@ -95,8 +94,8 @@
if (session_generator == 0)
session_generator++;
m_SessionMap.Put(session_generator, pTemp);
- if (aUserName != nullptr && aUserName[0] != '\0')
- m_ProfileMap.Put(nsDependentString(aUserName), session_generator);
+ if (!aUserName.IsEmpty())
+ m_ProfileMap.Put(aUserName, session_generator);
*aSession = session_generator;
sessionCount++;
nResult = 1;
@@ -266,15 +265,14 @@
}
-nsMAPISession::nsMAPISession(uint32_t aHwnd, const char16_t *aUserName,
- const char16_t *aPassword,
+nsMAPISession::nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, const char *aKey)
: m_nShared(1),
m_pIdKey(aKey)
{
m_listContext = NULL;
- m_pProfileName.Assign(aUserName);
- m_pPassword.Assign(aPassword);
+ m_pProfileName = aUserName;
+ m_pPassword = aPassword;
}
nsMAPISession::~nsMAPISession()
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiMain.h thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiMain.h
--- thunderbird-60.5.1+build2/comm/mailnews/mapi/mapihook/src/msgMapiMain.h 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mapi/mapihook/src/msgMapiMain.h 2019-03-05 06:14:40.000000000 +0000
@@ -31,7 +31,7 @@
PRLock *m_Lock;
uint32_t m_nMaxSessions;
- nsDataHashtable m_ProfileMap;
+ nsDataHashtable m_ProfileMap;
nsClassHashtable m_SessionMap;
nsMAPIConfiguration();
~nsMAPIConfiguration();
@@ -39,8 +39,8 @@
public :
static nsMAPIConfiguration *GetMAPIConfiguration();
void OpenConfiguration();
- int16_t RegisterSession(uint32_t aHwnd, const char16_t *aUserName, \
- const char16_t *aPassword, bool aForceDownLoad, \
+ int16_t RegisterSession(uint32_t aHwnd, const nsCString& aUserName,
+ const nsCString& aPassword, bool aForceDownLoad,
bool aNewSession, uint32_t *aSession, const char *aIdKey);
bool IsSessionValid(uint32_t aSessionID);
bool UnRegisterSession(uint32_t aSessionID);
@@ -60,13 +60,12 @@
private :
uint32_t m_nShared;
nsCString m_pIdKey;
- nsString m_pProfileName;
- nsString m_pPassword;
+ nsCString m_pProfileName;
+ nsCString m_pPassword;
void *m_listContext; // used by findNext
public :
- nsMAPISession(uint32_t aHwnd, const char16_t *aUserName, \
- const char16_t *aPassword, \
+ nsMAPISession(uint32_t aHwnd, const nsCString& aUserName, const nsCString& aPassword,
bool aForceDownLoad, const char *aKey);
uint32_t IncrementSession();
uint32_t DecrementSession();
diff -Nru thunderbird-60.5.1+build2/comm/mailnews/mime/src/nsCMS.cpp thunderbird-60.5.3+build1/comm/mailnews/mime/src/nsCMS.cpp
--- thunderbird-60.5.1+build2/comm/mailnews/mime/src/nsCMS.cpp 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/mailnews/mime/src/nsCMS.cpp 2019-03-05 06:14:40.000000000 +0000
@@ -25,6 +25,7 @@
#include "pkix/Result.h"
#include "pkix/pkixtypes.h"
#include "smime.h"
+#include "mozilla/StaticMutex.h"
using namespace mozilla;
using namespace mozilla::psm;
@@ -228,18 +229,6 @@
goto loser;
}
- if (NSS_CMSSignedData_HasDigests(sigd)) {
- SECAlgorithmID **existingAlgs = NSS_CMSSignedData_GetDigestAlgs(sigd);
- if (existingAlgs) {
- while (*existingAlgs) {
- SECAlgorithmID *alg = *existingAlgs;
- SECOidTag algOIDTag = SECOID_FindOIDTag(&alg->algorithm);
- NSS_CMSSignedData_SetDigestValue(sigd, algOIDTag, NULL);
- ++existingAlgs;
- }
- }
- }
-
if (aDigestData && aDigestDataLen)
{
SECOidTag oidTag;
@@ -247,6 +236,18 @@
digest.data = aDigestData;
digest.len = aDigestDataLen;
+ if (NSS_CMSSignedData_HasDigests(sigd)) {
+ SECAlgorithmID **existingAlgs = NSS_CMSSignedData_GetDigestAlgs(sigd);
+ if (existingAlgs) {
+ while (*existingAlgs) {
+ SECAlgorithmID *alg = *existingAlgs;
+ SECOidTag algOIDTag = SECOID_FindOIDTag(&alg->algorithm);
+ NSS_CMSSignedData_SetDigestValue(sigd, algOIDTag, NULL);
+ ++existingAlgs;
+ }
+ }
+ }
+
if (!GetIntHashToOidHash(aDigestType, oidTag)) {
rv = NS_ERROR_CMS_VERIFY_BAD_DIGEST;
goto loser;
@@ -390,6 +391,7 @@
{
MOZ_ASSERT(!NS_IsMainThread());
+ mozilla::StaticMutexAutoLock lock(sMutex);
nsresult rv;
if (!mDigestData.IsEmpty()) {
rv = mMessage->VerifyDetachedSignature(
@@ -413,8 +415,12 @@
nsCOMPtr mListener;
nsCString mDigestData;
int16_t mDigestType;
+
+ static mozilla::StaticMutex sMutex;
};
+mozilla::StaticMutex SMimeVerificationTask::sMutex;
+
nsresult nsCMSMessage::CommonAsyncVerifySignature(nsISMimeVerificationListener *aListener,
unsigned char* aDigestData, uint32_t aDigestDataLen,
int16_t aDigestType)
diff -Nru thunderbird-60.5.1+build2/comm/suite/installer/windows/nsis/shared.nsh thunderbird-60.5.3+build1/comm/suite/installer/windows/nsis/shared.nsh
--- thunderbird-60.5.1+build2/comm/suite/installer/windows/nsis/shared.nsh 2019-02-19 13:46:57.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/suite/installer/windows/nsis/shared.nsh 2019-03-05 06:14:40.000000000 +0000
@@ -467,6 +467,7 @@
WriteRegStr HKLM "$0" "" "${BrandFullNameInternal}"
WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0"
WriteRegStr HKLM "$0" "DLLPath" "$6"
+ WriteRegDWORD HKLM "$0" "SupportUTF8" 0
; The MapiProxy dll can be used by multiple applications but
; is only registered for the last application installed. When the last
diff -Nru thunderbird-60.5.1+build2/comm/taskcluster/ci/release-balrog-scheduling/kind.yml thunderbird-60.5.3+build1/comm/taskcluster/ci/release-balrog-scheduling/kind.yml
--- thunderbird-60.5.1+build2/comm/taskcluster/ci/release-balrog-scheduling/kind.yml 2019-02-19 13:46:58.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/taskcluster/ci/release-balrog-scheduling/kind.yml 2019-03-05 06:14:40.000000000 +0000
@@ -48,7 +48,7 @@
description: Schedule Thunderbird publishing in balrog (bz2)
name: release-thunderbird_schedule_publishing_in_balrog-bz2
shipping-product: thunderbird
- run-on-releases: [esr60]
+ run-on-releases: [release]
worker:
product: thunderbird
publish-rules: [516]
diff -Nru thunderbird-60.5.1+build2/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml thunderbird-60.5.3+build1/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml
--- thunderbird-60.5.1+build2/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml 2019-02-19 13:46:58.000000000 +0000
+++ thunderbird-60.5.3+build1/comm/taskcluster/ci/release-balrog-submit-toplevel/kind.yml 2019-03-05 06:14:40.000000000 +0000
@@ -67,7 +67,7 @@
name: submit-toplevel-thunderbird-release-to-balrog-bz2
description: Submit toplevel Thunderbird release to balrog (bz2)
shipping-product: thunderbird
- run-on-releases: [esr60]
+ run-on-releases: [release]
worker:
product: thunderbird
channel-names: ["release", "release-localtest", "release-cdntest"]
diff -Nru thunderbird-60.5.1+build2/debian/changelog thunderbird-60.5.3+build1/debian/changelog
--- thunderbird-60.5.1+build2/debian/changelog 2019-02-19 15:03:57.000000000 +0000
+++ thunderbird-60.5.3+build1/debian/changelog 2019-03-05 09:24:12.000000000 +0000
@@ -1,3 +1,9 @@
+thunderbird (1:60.5.3+build1-0ubuntu0.14.04.1) trusty; urgency=medium
+
+ * New upstream stable release (60.5.3build1)
+
+ -- Olivier Tilloy Tue, 05 Mar 2019 10:24:12 +0100
+
thunderbird (1:60.5.1+build2-0ubuntu0.14.04.1) trusty; urgency=medium
* New upstream stable release (60.5.1build2)