summaryrefslogtreecommitdiff
path: root/messages.cpp
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2013-10-10 12:55:59 +0300
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2013-10-10 12:55:59 +0300
commit2db81bed3b59b2c48bac5cbd97b511e79a9f23ca (patch)
tree756d44af537dd3463e1f81cecf0cf48213ce3d5f /messages.cpp
parent3ad5e6b61974c2d71f4afaefeab7c2ed8804176c (diff)
merged some of critical fixes from miranda ng main reponew_gpg
Diffstat (limited to 'messages.cpp')
-rwxr-xr-xmessages.cpp108
1 files changed, 15 insertions, 93 deletions
diff --git a/messages.cpp b/messages.cpp
index 7a4667f..4b82cc2 100755
--- a/messages.cpp
+++ b/messages.cpp
@@ -42,7 +42,7 @@ void RecvMsgSvc_func(HANDLE hContact, std::wstring str, char *msg, DWORD flags,
{
if(bDebugLog)
debuglog<<std::string(time_str()+": info: received encrypted message from: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR))+" with turned off encryption");
- if(MessageBox(0, TranslateT("We received encrypted message from contact with encryption turned off.\nDo you want turn on encryption for this contact ?"), TranslateT("Warning"), MB_YESNO) == IDYES)
+ if(MessageBox(0, TranslateT("We received encrypted message from contact with encryption turned off.\nDo you want to turn on encryption for this contact?"), TranslateT("Warning"), MB_YESNO) == IDYES)
{
if(!isContactHaveKey(hContact))
{
@@ -66,7 +66,7 @@ void RecvMsgSvc_func(HANDLE hContact, std::wstring str, char *msg, DWORD flags,
setClistIcon(hContact);
}
}
- else if(MessageBox(0, TranslateT("Do you want try to decrypt encrypted message ?"), TranslateT("Warning"), MB_YESNO) == IDNO)
+ else if(MessageBox(0, TranslateT("Do you want to try to decrypt encrypted message?"), TranslateT("Warning"), MB_YESNO) == IDNO)
{
HistoryLog(hContact, db_event(msg, timestamp, 0, dbflags));
@@ -268,7 +268,7 @@ void RecvMsgSvc_func(HANDLE hContact, std::wstring str, char *msg, DWORD flags,
str.insert(0, "Received unencrypted message:\n");
if(bDebugLog)
debuglog<<std::string(time_str()+": info: Failed to decrypt GPG encrypted message.");
- char *tmp = new char [str.length()+1];
+ char *tmp = (char*)mir_alloc(sizeof(char)*(str.length()+1));
strcpy(tmp, str.c_str());
HistoryLog(hContact, db_event(msg, timestamp, 0, dbflags));
BYTE enc = DBGetContactSettingByte(hContact, szGPGModuleName, "GPGEncryption", 0);
@@ -603,6 +603,7 @@ int RecvMsgSvc(WPARAM w, LPARAM l)
}
}
}
+ mir_free(jid);
}
}
if(!strstr(msg, "-----BEGIN PGP MESSAGE-----"))
@@ -710,7 +711,7 @@ void SendMsgSvc_func(HANDLE hContact, char *msg, DWORD flags)
if(out.find("There is no assurance this key belongs to the named user") != string::npos)
{
out.clear();
- if(MessageBox(0, TranslateT("We trying to encrypt with untrusted key, do you want to trust this key permanently ?"), TranslateT("Warning"), MB_YESNO) == IDYES)
+ if(MessageBox(0, TranslateT("We're trying to encrypt with untrusted key. Do you want to trust this key permanently?"), TranslateT("Warning"), MB_YESNO) == IDYES)
{
DBWriteContactSettingByte(hContact, szGPGModuleName, "bAlwaysTrust", 1);
std::vector<std::wstring> tmp;
@@ -745,13 +746,13 @@ void SendMsgSvc_func(HANDLE hContact, char *msg, DWORD flags)
if(result == pxSuccessExitCodeInvalid)
{
//mir_free(msg);
- HistoryLog(hContact, db_event(Translate("failed o encrypt message, GPG returned error, turn on debug log for more details"), 0,0, DBEF_SENT));
+ HistoryLog(hContact, db_event(Translate("failed to encrypt message, GPG returned error, turn on debug log for more details"), 0,0, DBEF_SENT));
boost::filesystem::remove(path);
return;
}
if(out.find("usage: ") != string::npos)
{
- MessageBox(0, TranslateT("Something wrong, gpg does not understand us, aborting encryption."), TranslateT("Warning"), MB_OK);
+ MessageBox(0, TranslateT("Something is wrong, GPG does not understand us, aborting encryption."), TranslateT("Warning"), MB_OK);
//mir_free(msg);
CallContactService(hContact, PSS_MESSAGE, (WPARAM)flags, (LPARAM)msg);
boost::filesystem::remove(path);
@@ -821,6 +822,8 @@ int SendMsgSvc(WPARAM w, LPARAM l)
CCSDATA *ccs = (CCSDATA*)l;
if (!ccs)
return CallService(MS_PROTO_CHAINSEND, w, l);
+ if(!ccs->lParam)
+ return CallService(MS_PROTO_CHAINSEND, w, l);
char *msg = nullptr;
if((ccs->wParam & PREF_UTF) == PREF_UTF)
msg = mir_strdup((char*)(ccs->lParam));
@@ -839,89 +842,7 @@ int SendMsgSvc(WPARAM w, LPARAM l)
debuglog<<std::string(time_str()+": info: encrypted messge, let it go, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
return CallService(MS_PROTO_CHAINSEND, w, l);
}
- /*if(!isContactHaveKey(ccs->hContact))
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info: contact have not key, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- if(bAutoExchange && !strstr(msg, "-----PGP KEY REQUEST-----") && !strstr(msg, "-----BEGIN PGP PUBLIC KEY BLOCK-----") && gpg_valid)
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info: checking for autoexchange possibility, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- void send_encrypted_msgs_thread(HANDLE hContact);
- LPSTR proto = (LPSTR)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)ccs->hContact, 0);
- DWORD uin = DBGetContactSettingDword(ccs->hContact, proto, "UIN", 0);
- if(uin)
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info(autoexchange): protocol looks like icq, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- char *proto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)ccs->hContact, 0);
- char svc[64];
- strcpy(svc, proto);
- strcat(svc, PS_ICQ_CHECKCAPABILITY);
-
- if(ServiceExists(svc))
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info(autoexchange, icq): checking for autoexchange icq capability, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- ICQ_CUSTOMCAP cap = {0};
- strcpy(cap.caps, "GPG AutoExchange");
- if(CallService(svc, (WPARAM)ccs->hContact, (LPARAM)&cap))
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info(autoexchange, icq): sending key requiest, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- CallContactService(ccs->hContact, PSS_MESSAGE, (WPARAM)ccs->wParam, (LPARAM)"-----PGP KEY REQUEST-----");
- hcontact_data[ccs->hContact].msgs_to_send.push_back(msg);
- boost::thread *thr = new boost::thread(boost::bind(send_encrypted_msgs_thread, ccs->hContact));
- mir_free(msg);
- return returnNoError(ccs->hContact);
- }
- }
- }
- else
- {
- TCHAR *jid = UniGetContactSettingUtf(ccs->hContact, proto, "jid", _T(""));
- if(jid[0])
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info(autoexchange): protocol looks like jabber, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- extern list <JabberAccount*> Accounts;
- list<JabberAccount*>::iterator end = Accounts.end();
- for(list<JabberAccount*>::iterator p = Accounts.begin(); p != end; p++)
- {
- TCHAR *caps = (*p)->getJabberInterface()->Net()->GetResourceFeatures(jid);
- if(caps)
- {
- wstring str;
- for(int i=0;;i++)
- {
- str.push_back(caps[i]);
- if(caps[i] == '\0')
- if(caps[i+1] == '\0')
- break;
- }
- mir_free(caps);
- if(str.find(_T("GPG_Key_Auto_Exchange:0")) != string::npos)
- {
- if(bDebugLog)
- debuglog<<std::string(time_str()+": info(autoexchange, jabber): autoexchange capability found, sending key request, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
- CallContactService(ccs->hContact, PSS_MESSAGE, (WPARAM)ccs->wParam, (LPARAM)"-----PGP KEY REQUEST-----");
- hcontact_data[ccs->hContact].msgs_to_send.push_back(msg);
- boost::thread *thr = new boost::thread(boost::bind(send_encrypted_msgs_thread, ccs->hContact));
- mir_free(msg);
- return returnNoError(ccs->hContact);
- }
- }
- }
- }
- }
- }
- else
- {
- mir_free(msg);
- return CallService(MS_PROTO_CHAINSEND, w, l);
- }
- } */
- else if(bDebugLog)
+ if(bDebugLog)
debuglog<<std::string(time_str()+": info: contact have key, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
if(bDebugLog && metaIsProtoMetaContacts(ccs->hContact))
debuglog<<std::string(time_str()+": info: protocol is metacontacts, name: "+toUTF8((TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ccs->hContact, GCDNF_TCHAR)));
@@ -1057,11 +978,11 @@ int HookSendMsg(WPARAM w, LPARAM l)
if(bAppendTags)
{
string str_event = (char*)dbei->pBlob;
- mir_free(dbei->pBlob);
+ //mir_free(dbei->pBlob);
str_event.insert(0, toUTF8(outopentag));
str_event.append(toUTF8(outclosetag));
dbei->pBlob = (PBYTE)mir_strdup(str_event.c_str());
- dbei->cbBlob = str_event.length() + 1;
+ dbei->cbBlob = (DWORD)str_event.length() + 1;
}
return 0;
@@ -1130,6 +1051,7 @@ static INT_PTR CALLBACK DlgProcKeyPassword(HWND hwndDlg, UINT msg, WPARAM wParam
TranslateDialogDefault(hwndDlg);
string questionstr = "Please enter password for key with ID: ";
questionstr += inkeyid;
+ mir_free(inkeyid);
SetDlgItemTextA(hwndDlg, IDC_KEYID, questionstr.c_str());
EnableWindow(GetDlgItem(hwndDlg, IDC_DEFAULT_PASSWORD), 0);
return TRUE;
@@ -1160,8 +1082,8 @@ static INT_PTR CALLBACK DlgProcKeyPassword(HWND hwndDlg, UINT msg, WPARAM wParam
DBWriteContactSettingTString(NULL, szGPGModuleName, "szKeyPassword", tmp);
}
if(password)
- delete [] password;
- password = new TCHAR [_tcslen(tmp)+1];
+ mir_free(password);
+ password = (TCHAR*)mir_alloc(sizeof(TCHAR)*(_tcslen(tmp)+1));
_tcscpy(password, tmp);
}
mir_free(tmp);