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)