From f485b5e4b683cc31168d440dc89574913e814852 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 30 Nov 2014 16:19:57 +0000 Subject: all buffer lengths are of size_t now git-svn-id: http://svn.miranda-ng.org/main/trunk@11173 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/IcqOscarJ/src/UI/userinfotab.cpp | 2 +- protocols/IcqOscarJ/src/capabilities.cpp | 6 +- protocols/IcqOscarJ/src/capabilities.h | 4 +- protocols/IcqOscarJ/src/chan_01login.cpp | 8 +- protocols/IcqOscarJ/src/chan_02data.cpp | 4 +- protocols/IcqOscarJ/src/chan_03error.cpp | 2 +- protocols/IcqOscarJ/src/chan_04close.cpp | 4 +- protocols/IcqOscarJ/src/chan_05ping.cpp | 2 +- protocols/IcqOscarJ/src/changeinfo/db.cpp | 3 +- protocols/IcqOscarJ/src/changeinfo/dlgproc.cpp | 2 +- protocols/IcqOscarJ/src/changeinfo/editstring.cpp | 14 +- protocols/IcqOscarJ/src/changeinfo/upload.cpp | 2 +- protocols/IcqOscarJ/src/channels.h | 2 +- protocols/IcqOscarJ/src/cookies.h | 14 +- protocols/IcqOscarJ/src/directpackets.cpp | 122 +++--- protocols/IcqOscarJ/src/fam_01service.cpp | 36 +- protocols/IcqOscarJ/src/fam_02location.cpp | 4 +- protocols/IcqOscarJ/src/fam_03buddy.cpp | 12 +- protocols/IcqOscarJ/src/fam_04message.cpp | 142 +++---- protocols/IcqOscarJ/src/fam_09bos.cpp | 4 +- protocols/IcqOscarJ/src/fam_0alookup.cpp | 4 +- protocols/IcqOscarJ/src/fam_0bstatus.cpp | 2 +- protocols/IcqOscarJ/src/fam_13servclist.cpp | 55 ++- protocols/IcqOscarJ/src/fam_15icqserver.cpp | 30 +- protocols/IcqOscarJ/src/fam_17signon.cpp | 27 +- protocols/IcqOscarJ/src/i18n.cpp | 174 +++----- protocols/IcqOscarJ/src/i18n.h | 8 +- protocols/IcqOscarJ/src/icq_advsearch.cpp | 10 +- protocols/IcqOscarJ/src/icq_advsearch.h | 4 +- protocols/IcqOscarJ/src/icq_avatar.cpp | 41 +- protocols/IcqOscarJ/src/icq_avatar.h | 46 +- protocols/IcqOscarJ/src/icq_clients.cpp | 2 +- protocols/IcqOscarJ/src/icq_db.cpp | 4 +- protocols/IcqOscarJ/src/icq_direct.cpp | 40 +- protocols/IcqOscarJ/src/icq_direct.h | 2 +- protocols/IcqOscarJ/src/icq_directmsg.cpp | 30 +- protocols/IcqOscarJ/src/icq_filerequests.cpp | 10 +- protocols/IcqOscarJ/src/icq_filetransfer.cpp | 69 ++- protocols/IcqOscarJ/src/icq_http.cpp | 19 +- protocols/IcqOscarJ/src/icq_infoupdate.cpp | 4 +- protocols/IcqOscarJ/src/icq_opts.cpp | 6 +- protocols/IcqOscarJ/src/icq_packet.cpp | 494 +++++++++++----------- protocols/IcqOscarJ/src/icq_packet.h | 64 +-- protocols/IcqOscarJ/src/icq_proto.cpp | 291 ++++++------- protocols/IcqOscarJ/src/icq_proto.h | 204 +++++---- protocols/IcqOscarJ/src/icq_rates.cpp | 4 +- protocols/IcqOscarJ/src/icq_rates.h | 2 +- protocols/IcqOscarJ/src/icq_server.cpp | 5 +- protocols/IcqOscarJ/src/icq_server.h | 4 +- protocols/IcqOscarJ/src/icq_servlist.cpp | 94 ++-- protocols/IcqOscarJ/src/icq_servlist.h | 12 +- protocols/IcqOscarJ/src/icq_uploadui.cpp | 6 +- protocols/IcqOscarJ/src/icq_xstatus.cpp | 8 +- protocols/IcqOscarJ/src/icq_xtraz.cpp | 50 +-- protocols/IcqOscarJ/src/icqosc_svcs.cpp | 25 +- protocols/IcqOscarJ/src/oscar_filetransfer.cpp | 61 ++- protocols/IcqOscarJ/src/oscar_filetransfer.h | 2 +- protocols/IcqOscarJ/src/stdpackets.cpp | 372 ++++++++-------- protocols/IcqOscarJ/src/tlv.cpp | 10 +- protocols/IcqOscarJ/src/tlv.h | 6 +- protocols/IcqOscarJ/src/utilities.cpp | 211 ++------- protocols/IcqOscarJ/src/utilities.h | 10 +- protocols/IcqOscarJ/src/version.h | 2 +- 63 files changed, 1333 insertions(+), 1580 deletions(-) (limited to 'protocols') diff --git a/protocols/IcqOscarJ/src/UI/userinfotab.cpp b/protocols/IcqOscarJ/src/UI/userinfotab.cpp index 8485f7489a..ee0c1da434 100644 --- a/protocols/IcqOscarJ/src/UI/userinfotab.cpp +++ b/protocols/IcqOscarJ/src/UI/userinfotab.cpp @@ -112,7 +112,7 @@ static void SetValue(CIcqProto* ppro, HWND hwndDlg, int idCtrl, MCONTACT hContac if (bXStatus) { pXName = ppro->getSettingStringUtf(hContact, DBSETTING_XSTATUS_NAME, NULL); - if (!strlennull(pXName)) { // give default name + if (!mir_strlen(pXName)) { // give default name pXName = ICQTranslateUtf(nameXStatus[bXStatus - 1]); } mir_snprintf(str, sizeof(str), "%s (%s)", pszStatus, pXName); diff --git a/protocols/IcqOscarJ/src/capabilities.cpp b/protocols/IcqOscarJ/src/capabilities.cpp index e8b75b960f..814b531582 100644 --- a/protocols/IcqOscarJ/src/capabilities.cpp +++ b/protocols/IcqOscarJ/src/capabilities.cpp @@ -87,7 +87,7 @@ void NetLog_CapabilityChange(CIcqProto *ppro, const char *szChange, DWORD fdwCap for (int nIndex = 0; nIndex < SIZEOF(CapabilityNames); nIndex++) { // Check if the current capability is present if ((fdwCapabilities & CapabilityNames[nIndex].capID) == CapabilityNames[nIndex].capID) { - if (strlennull(szBuffer)) + if (mir_strlen(szBuffer)) strcat(szBuffer, ", "); strcat(szBuffer, CapabilityNames[nIndex].capName); } @@ -152,7 +152,7 @@ BOOL CIcqProto::CheckContactCapabilities(MCONTACT hContact, DWORD fdwCapabilitie // Scan capability against the capability buffer -capstr* MatchCapability(BYTE *buf, int bufsize, const capstr *cap, int capsize) +capstr* MatchCapability(BYTE *buf, size_t bufsize, const capstr *cap, size_t capsize) { while (bufsize >= BINARY_CAP_SIZE) { // search the buffer for a capability if (!memcmp(buf, cap, capsize)) @@ -166,7 +166,7 @@ capstr* MatchCapability(BYTE *buf, int bufsize, const capstr *cap, int capsize) // Scan short capability against the capability buffer -capstr* MatchShortCapability(BYTE *buf, int bufsize, const shortcapstr *cap) +capstr* MatchShortCapability(BYTE *buf, size_t bufsize, const shortcapstr *cap) { capstr fullCap; memcpy(fullCap, capShortCaps, BINARY_CAP_SIZE); diff --git a/protocols/IcqOscarJ/src/capabilities.h b/protocols/IcqOscarJ/src/capabilities.h index cff5ab9f04..c0b7f082f4 100644 --- a/protocols/IcqOscarJ/src/capabilities.h +++ b/protocols/IcqOscarJ/src/capabilities.h @@ -36,8 +36,8 @@ typedef BYTE shortcapstr[BINARY_SHORT_CAP_SIZE]; extern const capstr capShortCaps; -capstr* MatchCapability(BYTE *buf, int bufsize, const capstr *cap, int capsize = BINARY_CAP_SIZE); -capstr* MatchShortCapability(BYTE *buf, int bufsize, const shortcapstr *cap); +capstr* MatchCapability(BYTE *buf, size_t bufsize, const capstr *cap, size_t capsize = BINARY_CAP_SIZE); +capstr* MatchShortCapability(BYTE *buf, size_t bufsize, const shortcapstr *cap); #endif /* __CAPABILITIES_H */ diff --git a/protocols/IcqOscarJ/src/chan_01login.cpp b/protocols/IcqOscarJ/src/chan_01login.cpp index 48fc85dfcc..061212d70a 100644 --- a/protocols/IcqOscarJ/src/chan_01login.cpp +++ b/protocols/IcqOscarJ/src/chan_01login.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleLoginChannel(BYTE *buf, WORD datalen, serverthread_info *info) +void CIcqProto::handleLoginChannel(BYTE *buf, size_t datalen, serverthread_info *info) { icq_packet packet; @@ -43,11 +43,11 @@ void CIcqProto::handleLoginChannel(BYTE *buf, WORD datalen, serverthread_info *i sendServPacket(&packet); // greet login server char szUin[UINMAXLEN]; - WORD wUinLen = strlennull(strUID(m_dwLocalUIN, szUin)); + size_t wUinLen = mir_strlen(strUID(m_dwLocalUIN, szUin)); debugLogA("Sending %s to %s", "ICQ_SIGNON_AUTH_REQUEST", "login server"); - serverPacketInit(&packet, (WORD)(14 + wUinLen)); + serverPacketInit(&packet, 14 + wUinLen); packFNACHeader(&packet, ICQ_AUTHORIZATION_FAMILY, ICQ_SIGNON_AUTH_REQUEST, 0, 0); packTLV(&packet, 0x0001, wUinLen, (LPBYTE)szUin); sendServPacket(&packet); // request login digest @@ -67,7 +67,7 @@ void CIcqProto::handleLoginChannel(BYTE *buf, WORD datalen, serverthread_info *i if (info->cookieDataLen) { wLocalSequence = generate_flap_sequence(); - serverCookieInit(&packet, info->cookieData, (WORD)info->cookieDataLen); + serverCookieInit(&packet, info->cookieData, info->cookieDataLen); sendServPacket(&packet); debugLogA("Sent CLI_IDENT to %s", "communication server"); diff --git a/protocols/IcqOscarJ/src/chan_02data.cpp b/protocols/IcqOscarJ/src/chan_02data.cpp index 37b8617465..3a14ef1efd 100644 --- a/protocols/IcqOscarJ/src/chan_02data.cpp +++ b/protocols/IcqOscarJ/src/chan_02data.cpp @@ -29,7 +29,7 @@ #include "icqoscar.h" -void CIcqProto::handleDataChannel(BYTE *pBuffer, WORD wBufferLength, serverthread_info *info) +void CIcqProto::handleDataChannel(BYTE *pBuffer, size_t wBufferLength, serverthread_info *info) { snac_header snacHeader = {0}; @@ -91,7 +91,7 @@ void CIcqProto::handleDataChannel(BYTE *pBuffer, WORD wBufferLength, serverthrea } -int unpackSnacHeader(snac_header *pSnacHeader, BYTE **pBuffer, WORD *pwBufferLength) +int unpackSnacHeader(snac_header *pSnacHeader, BYTE **pBuffer, size_t *pwBufferLength) { WORD wRef1, wRef2; diff --git a/protocols/IcqOscarJ/src/chan_03error.cpp b/protocols/IcqOscarJ/src/chan_03error.cpp index a44ae3af3b..2e73d6eb07 100644 --- a/protocols/IcqOscarJ/src/chan_03error.cpp +++ b/protocols/IcqOscarJ/src/chan_03error.cpp @@ -24,7 +24,7 @@ #include "icqoscar.h" -void CIcqProto::handleErrorChannel(unsigned char* buf, WORD datalen) +void CIcqProto::handleErrorChannel(unsigned char* buf, size_t datalen) { debugLogA("Ignoring server packet on ERROR channel"); } diff --git a/protocols/IcqOscarJ/src/chan_04close.cpp b/protocols/IcqOscarJ/src/chan_04close.cpp index d7f6548f82..12eef821ba 100644 --- a/protocols/IcqOscarJ/src/chan_04close.cpp +++ b/protocols/IcqOscarJ/src/chan_04close.cpp @@ -24,7 +24,7 @@ #include "icqoscar.h" -void CIcqProto::handleCloseChannel(BYTE *buf, WORD datalen, serverthread_info *info) +void CIcqProto::handleCloseChannel(BYTE *buf, size_t datalen, serverthread_info *info) { oscar_tlv_chain *chain = NULL; @@ -65,7 +65,7 @@ void CIcqProto::handleCloseChannel(BYTE *buf, WORD datalen, serverthread_info *i NetLib_CloseConnection(&hServerConn, TRUE); } -void CIcqProto::handleLoginReply(BYTE *buf, WORD datalen, serverthread_info *info) +void CIcqProto::handleLoginReply(BYTE *buf, size_t datalen, serverthread_info *info) { oscar_tlv_chain *chain = NULL; diff --git a/protocols/IcqOscarJ/src/chan_05ping.cpp b/protocols/IcqOscarJ/src/chan_05ping.cpp index 8e735337e8..c3bc72c62d 100644 --- a/protocols/IcqOscarJ/src/chan_05ping.cpp +++ b/protocols/IcqOscarJ/src/chan_05ping.cpp @@ -24,7 +24,7 @@ #include "icqoscar.h" -void CIcqProto::handlePingChannel(BYTE *buf, WORD datalen) +void CIcqProto::handlePingChannel(BYTE *buf, size_t datalen) { debugLogA("Warning: Ignoring server packet on PING channel"); } diff --git a/protocols/IcqOscarJ/src/changeinfo/db.cpp b/protocols/IcqOscarJ/src/changeinfo/db.cpp index 31f88db502..d4d8d6881c 100644 --- a/protocols/IcqOscarJ/src/changeinfo/db.cpp +++ b/protocols/IcqOscarJ/src/changeinfo/db.cpp @@ -179,8 +179,7 @@ int ChangeInfoData::SaveSettingsToDb(HWND hwndDlg) switch (si.dbType) { case DBVT_ASCIIZ: if (si.displayType & LIF_PASSWORD) { - int nSettingLen = strlennull((char*)sid.value); - + size_t nSettingLen = mir_strlen((char*)sid.value); if (nSettingLen > 8 || nSettingLen < 1) { MessageBox(hwndDlg, TranslateT("The ICQ server does not support passwords longer than 8 characters. Please use a shorter password."), TranslateT("Change ICQ Details"), MB_OK); ret = 0; diff --git a/protocols/IcqOscarJ/src/changeinfo/dlgproc.cpp b/protocols/IcqOscarJ/src/changeinfo/dlgproc.cpp index 0edfa48fcb..dff436cf78 100644 --- a/protocols/IcqOscarJ/src/changeinfo/dlgproc.cpp +++ b/protocols/IcqOscarJ/src/changeinfo/dlgproc.cpp @@ -36,7 +36,7 @@ static int DrawTextUtf(HDC hDC, char *text, LPRECT lpRect, UINT uFormat, LPSIZE WCHAR *tmp = make_unicode_string(text); res = DrawTextW(hDC, tmp, -1, lpRect, uFormat); if (lpSize) - GetTextExtentPoint32W(hDC, tmp, strlennull(tmp), lpSize); + GetTextExtentPoint32W(hDC, tmp, (int)mir_wstrlen(tmp), lpSize); SAFE_FREE((void**)&tmp); return res; diff --git a/protocols/IcqOscarJ/src/changeinfo/editstring.cpp b/protocols/IcqOscarJ/src/changeinfo/editstring.cpp index 19fdd4c2b7..528f73eaea 100644 --- a/protocols/IcqOscarJ/src/changeinfo/editstring.cpp +++ b/protocols/IcqOscarJ/src/changeinfo/editstring.cpp @@ -55,7 +55,7 @@ static void EscapesToMultiline(WCHAR *str,PDWORD selStart,PDWORD selEnd) else if (str[1] == 't') { *str = '\t'; - memmove(str+1, str+2, sizeof(WCHAR)*(strlennull(str)-1)); + memmove(str+1, str+2, sizeof(WCHAR)*(mir_wstrlen(str)-1)); if (*selStart>i) --*selStart; if (*selEnd>i) --*selEnd; @@ -76,14 +76,14 @@ static void EscapesToBinary(char *str) char *codeend; *str=(char)strtol(str+1,&codeend,8); if (*str==0) {*str='\\'; continue;} - memmove(str+1,codeend,strlennull(codeend)+1); + memmove(str+1,codeend,mir_strlen(codeend)+1); continue; } for(int i=0;iGetUserPassword(TRUE); if (tmp) { - if (strlennull(Password) > 0 && strcmpnull(Password, tmp)) { + if (mir_strlen(Password) > 0 && strcmpnull(Password, tmp)) { // update password in user info dialog (still open) strcpy(Password, tmp); // update password in protocol diff --git a/protocols/IcqOscarJ/src/channels.h b/protocols/IcqOscarJ/src/channels.h index 5d7c73489b..864be6d4aa 100644 --- a/protocols/IcqOscarJ/src/channels.h +++ b/protocols/IcqOscarJ/src/channels.h @@ -40,6 +40,6 @@ struct snac_header WORD wVersion; }; -int unpackSnacHeader(snac_header *pSnacHeader, BYTE **pBuffer, WORD *pwBufferLength); +int unpackSnacHeader(snac_header *pSnacHeader, BYTE **pBuffer, size_t *pwBufferLength); #endif /* __CHANNELS_H */ diff --git a/protocols/IcqOscarJ/src/cookies.h b/protocols/IcqOscarJ/src/cookies.h index d8233f71c2..82178f9b01 100644 --- a/protocols/IcqOscarJ/src/cookies.h +++ b/protocols/IcqOscarJ/src/cookies.h @@ -1,23 +1,23 @@ // ---------------------------------------------------------------------------80 // ICQ plugin for Miranda Instant Messenger // ________________________________________ -// +// // Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede // Copyright © 2001-2002 Jon Keating, Richard Hughes // Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater // Copyright © 2004-2010 Joe Kucera // Copyright © 2012-2014 Miranda NG Team -// +// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. @@ -56,7 +56,7 @@ struct icq_cookie_info struct cookie_family_request { WORD wFamily; - void (CIcqProto::*familyHandler)(HANDLE hConn, char* cookie, WORD cookieLen); + void (CIcqProto::*familyHandler)(HANDLE hConn, char* cookie, size_t cookieLen); }; @@ -110,9 +110,9 @@ struct cookie_avatar { DWORD dwUin; MCONTACT hContact; - unsigned int hashlen; + size_t hashlen; BYTE *hash; - unsigned int cbData; + size_t cbData; TCHAR *szFile; }; diff --git a/protocols/IcqOscarJ/src/directpackets.cpp b/protocols/IcqOscarJ/src/directpackets.cpp index 9e24b25c89..0e91b4fd2f 100644 --- a/protocols/IcqOscarJ/src/directpackets.cpp +++ b/protocols/IcqOscarJ/src/directpackets.cpp @@ -29,7 +29,7 @@ void EncryptDirectPacket(directconnect* dc, icq_packet* p); void packEmptyMsg(icq_packet *packet); -static void packDirectMsgHeader(icq_packet* packet, WORD wDataLen, WORD wCommand, DWORD dwCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wX1, WORD wX2) +static void packDirectMsgHeader(icq_packet* packet, size_t wDataLen, WORD wCommand, DWORD dwCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wX1, WORD wX2) { directPacketInit(packet, 29 + wDataLen); packByte(packet, 2); /* channel */ @@ -50,16 +50,13 @@ static void packDirectMsgHeader(icq_packet* packet, WORD wDataLen, WORD wCommand void CIcqProto::icq_sendDirectMsgAck(directconnect* dc, WORD wCookie, BYTE bMsgType, BYTE bMsgFlags, char* szCap) { icq_packet packet; - - packDirectMsgHeader(&packet, (WORD)(bMsgType==MTYPE_PLAIN ? (szCap ? 53 : 11) : 3), DIRECT_ACK, wCookie, bMsgType, bMsgFlags, 0, 0); + packDirectMsgHeader(&packet, bMsgType == MTYPE_PLAIN ? (szCap ? 53 : 11) : 3, DIRECT_ACK, wCookie, bMsgType, bMsgFlags, 0, 0); packEmptyMsg(&packet); /* empty message */ - if (bMsgType == MTYPE_PLAIN) - { + if (bMsgType == MTYPE_PLAIN) { packMsgColorInfo(&packet); - if (szCap) - { + if (szCap) { packLEDWord(&packet, 0x26); /* CLSID length */ packBuffer(&packet, (LPBYTE)szCap, 0x26); /* GUID */ } @@ -73,16 +70,13 @@ void CIcqProto::icq_sendDirectMsgAck(directconnect* dc, WORD wCookie, BYTE bMsgT DWORD CIcqProto::icq_sendGetAwayMsgDirect(MCONTACT hContact, int type) { - icq_packet packet; - DWORD dwCookie; - cookie_message_data *pCookieData; - if (getWord(hContact, "Version", 0) >= 9) return 0; // v9 DC protocol does not support this message - pCookieData = CreateMessageCookie(MTYPE_AUTOAWAY, (BYTE)type); - dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); + cookie_message_data *pCookieData = CreateMessageCookie(MTYPE_AUTOAWAY, (BYTE)type); + DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); + icq_packet packet; packDirectMsgHeader(&packet, 3, DIRECT_MESSAGE, dwCookie, (BYTE)type, 3, 1, 0); packEmptyMsg(&packet); // message @@ -92,25 +86,23 @@ DWORD CIcqProto::icq_sendGetAwayMsgDirect(MCONTACT hContact, int type) void CIcqProto::icq_sendAwayMsgReplyDirect(directconnect* dc, WORD wCookie, BYTE msgType, const char** szMsg) { - icq_packet packet; - - if (validateStatusMessageRequest(dc->hContact, msgType)) - { + if (validateStatusMessageRequest(dc->hContact, msgType)) { NotifyEventHooks(m_modeMsgsEvent, (WPARAM)msgType, (LPARAM)dc->dwRemoteUin); icq_lock l(m_modeMsgsMutex); - if (szMsg && *szMsg) - { + if (szMsg && *szMsg) { // prepare Ansi message - only Ansi supported - WORD wMsgLen = strlennull(*szMsg) + 1; + size_t wMsgLen = mir_strlen(*szMsg) + 1; char *szAnsiMsg = (char*)_alloca(wMsgLen); utf8_decode_static(*szMsg, szAnsiMsg, wMsgLen); - wMsgLen = strlennull(szAnsiMsg); - packDirectMsgHeader(&packet, (WORD)(3 + wMsgLen), DIRECT_ACK, wCookie, msgType, 3, 0, 0); - packLEWord(&packet, (WORD)(wMsgLen + 1)); - packBuffer(&packet, (LPBYTE)szAnsiMsg, (WORD)(wMsgLen + 1)); + wMsgLen = mir_strlen(szAnsiMsg); + + icq_packet packet; + packDirectMsgHeader(&packet, 3 + wMsgLen, DIRECT_ACK, wCookie, msgType, 3, 0, 0); + packLEWord(&packet, WORD(wMsgLen + 1)); + packBuffer(&packet, (LPBYTE)szAnsiMsg, wMsgLen + 1); EncryptDirectPacket(dc, &packet); sendDirectPacket(dc, &packet); @@ -123,7 +115,6 @@ void CIcqProto::icq_sendFileAcceptDirect(MCONTACT hContact, filetransfer* ft) { // v7 packet icq_packet packet; - packDirectMsgHeader(&packet, 18, DIRECT_ACK, ft->dwCookie, MTYPE_FILEREQ, 0, 0, 0); packLEWord(&packet, 1); // description packByte(&packet, 0); @@ -144,25 +135,24 @@ void CIcqProto::icq_sendFileDenyDirect(MCONTACT hContact, filetransfer *ft, cons { // v7 packet icq_packet packet; - char *szReasonAnsi = NULL; - int cbReasonAnsi = 0; - + char *szReasonAnsi = NULL; if (!utf8_decode(szReason, &szReasonAnsi)) szReasonAnsi = _strdup(szReason); // Legacy fix - cbReasonAnsi = strlennull(szReasonAnsi); + size_t cbReasonAnsi = mir_strlen(szReasonAnsi); - packDirectMsgHeader(&packet, (WORD)(18 + cbReasonAnsi), DIRECT_ACK, ft->dwCookie, MTYPE_FILEREQ, 0, 1, 0); - packLEWord(&packet, (WORD)(1 + cbReasonAnsi)); // description - if (szReasonAnsi) packBuffer(&packet, (LPBYTE)szReasonAnsi, (WORD)cbReasonAnsi); + packDirectMsgHeader(&packet, 18 + cbReasonAnsi, DIRECT_ACK, ft->dwCookie, MTYPE_FILEREQ, 0, 1, 0); + packLEWord(&packet, WORD(1 + cbReasonAnsi)); // description + if (szReasonAnsi) + packBuffer(&packet, (LPBYTE)szReasonAnsi, cbReasonAnsi); packByte(&packet, 0); packWord(&packet, 0); packLEWord(&packet, 0); packLEWord(&packet, 1); // filename packByte(&packet, 0); // TODO: really send filename packLEDWord(&packet, 0); // file size - packLEDWord(&packet, 0); + packLEDWord(&packet, 0); - SAFE_FREE(&szReasonAnsi); + SAFE_FREE(&szReasonAnsi); SendDirectMessage(hContact, &packet); @@ -172,20 +162,20 @@ void CIcqProto::icq_sendFileDenyDirect(MCONTACT hContact, filetransfer *ft, cons int CIcqProto::icq_sendFileSendDirectv7(filetransfer *ft, const char *pszFiles) { - icq_packet packet; char *szFilesAnsi = NULL; - WORD wDescrLen = strlennull(ft->szDescription), wFilesLen = 0; + size_t wDescrLen = mir_strlen(ft->szDescription); if (!utf8_decode(pszFiles, &szFilesAnsi)) szFilesAnsi = _strdup(pszFiles); // Legacy fix - wFilesLen = strlennull(szFilesAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi); - packDirectMsgHeader(&packet, (WORD)(18 + wDescrLen + wFilesLen), DIRECT_MESSAGE, (WORD)ft->dwCookie, MTYPE_FILEREQ, 0, 0, 0); - packLEWord(&packet, (WORD)(wDescrLen + 1)); - packBuffer(&packet, (LPBYTE)ft->szDescription, (WORD)(wDescrLen + 1)); + icq_packet packet; + packDirectMsgHeader(&packet, 18 + wDescrLen + wFilesLen, DIRECT_MESSAGE, (WORD)ft->dwCookie, MTYPE_FILEREQ, 0, 0, 0); + packLEWord(&packet, WORD(wDescrLen + 1)); + packBuffer(&packet, (LPBYTE)ft->szDescription, wDescrLen + 1); packLEDWord(&packet, 0); // listen port - packLEWord(&packet, (WORD)(wFilesLen + 1)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen + 1)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen + 1); packLEDWord(&packet, ft->dwTotalSize); packLEDWord(&packet, 0); // listen port (again) @@ -199,25 +189,25 @@ int CIcqProto::icq_sendFileSendDirectv7(filetransfer *ft, const char *pszFiles) int CIcqProto::icq_sendFileSendDirectv8(filetransfer *ft, const char *pszFiles) { - icq_packet packet; char *szFilesAnsi = NULL; - WORD wDescrLen = strlennull(ft->szDescription), wFilesLen = 0; + size_t wDescrLen = mir_strlen(ft->szDescription); if (!utf8_decode(pszFiles, &szFilesAnsi)) szFilesAnsi = _strdup(pszFiles); // Legacy fix - wFilesLen = strlennull(szFilesAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi)+1; - packDirectMsgHeader(&packet, (WORD)(0x2E + 22 + wDescrLen + wFilesLen + 1), DIRECT_MESSAGE, (WORD)ft->dwCookie, MTYPE_PLUGIN, 0, 0, 0); + icq_packet packet; + packDirectMsgHeader(&packet, 0x2E + 22 + wDescrLen + wFilesLen, DIRECT_MESSAGE, (WORD)ft->dwCookie, MTYPE_PLUGIN, 0, 0, 0); packEmptyMsg(&packet); // message packPluginTypeId(&packet, MTYPE_FILEREQ); - packLEDWord(&packet, (WORD)(18 + wDescrLen + wFilesLen + 1)); // Remaining length - packLEDWord(&packet, wDescrLen); // Description + packLEDWord(&packet, WORD(18 + wDescrLen + wFilesLen)); // Remaining length + packLEDWord(&packet, DWORD(wDescrLen)); // Description packBuffer(&packet, (LPBYTE)ft->szDescription, wDescrLen); packWord(&packet, 0x8c82); // Unknown (port?), seen 0x80F6 packWord(&packet, 0x0222); // Unknown, seen 0x2e01 - packLEWord(&packet, (WORD)(wFilesLen + 1)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen); packLEDWord(&packet, ft->dwTotalSize); packLEDWord(&packet, 0x0008c82); // Unknown, (seen 0xf680 ~33000) @@ -229,16 +219,16 @@ int CIcqProto::icq_sendFileSendDirectv8(filetransfer *ft, const char *pszFiles) } -DWORD CIcqProto::icq_SendDirectMessage(MCONTACT hContact, const char *szMessage, int nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap) +DWORD CIcqProto::icq_SendDirectMessage(MCONTACT hContact, const char *szMessage, size_t nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap) { - icq_packet packet; DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); // Pack the standard header - packDirectMsgHeader(&packet, (WORD)(nBodyLength + (szCap ? 53:11)), DIRECT_MESSAGE, dwCookie, (BYTE)pCookieData->bMessageType, 0, 0, 0); + icq_packet packet; + packDirectMsgHeader(&packet, nBodyLength + (szCap ? 53 : 11), DIRECT_MESSAGE, dwCookie, (BYTE)pCookieData->bMessageType, 0, 0, 0); - packLEWord(&packet, (WORD)(nBodyLength+1)); // Length of message - packBuffer(&packet, (LPBYTE)szMessage, (WORD)(nBodyLength+1)); // Message + packLEWord(&packet, WORD(nBodyLength+1)); // Length of message + packBuffer(&packet, (LPBYTE)szMessage, nBodyLength+1); // Message packMsgColorInfo(&packet); if (szCap) { @@ -253,34 +243,32 @@ DWORD CIcqProto::icq_SendDirectMessage(MCONTACT hContact, const char *szMessage, return 0; // Failure } -void CIcqProto::icq_sendXtrazRequestDirect(MCONTACT hContact, DWORD dwCookie, char* szBody, int nBodyLen, WORD wType) +void CIcqProto::icq_sendXtrazRequestDirect(MCONTACT hContact, DWORD dwCookie, char* szBody, size_t nBodyLen, WORD wType) { icq_packet packet; - - packDirectMsgHeader(&packet, (WORD)(11 + getPluginTypeIdLen(wType) + nBodyLen), DIRECT_MESSAGE, dwCookie, MTYPE_PLUGIN, 0, 0, 1); + packDirectMsgHeader(&packet, 11 + getPluginTypeIdLen(wType) + nBodyLen, DIRECT_MESSAGE, dwCookie, MTYPE_PLUGIN, 0, 0, 1); packEmptyMsg(&packet); // message (unused) packPluginTypeId(&packet, wType); - packLEDWord(&packet, nBodyLen + 4); - packLEDWord(&packet, nBodyLen); - packBuffer(&packet, (LPBYTE)szBody, (WORD)nBodyLen); + packLEDWord(&packet, DWORD(nBodyLen + 4)); + packLEDWord(&packet, DWORD(nBodyLen)); + packBuffer(&packet, (LPBYTE)szBody, nBodyLen); SendDirectMessage(hContact, &packet); } -void CIcqProto::icq_sendXtrazResponseDirect(MCONTACT hContact, WORD wCookie, char* szBody, int nBodyLen, WORD wType) +void CIcqProto::icq_sendXtrazResponseDirect(MCONTACT hContact, WORD wCookie, char* szBody, size_t nBodyLen, WORD wType) { icq_packet packet; + packDirectMsgHeader(&packet, getPluginTypeIdLen(wType) + 11 + nBodyLen, DIRECT_ACK, wCookie, MTYPE_PLUGIN, 0, 0, 0); - packDirectMsgHeader(&packet, (WORD)(getPluginTypeIdLen(wType) + 11 + nBodyLen), DIRECT_ACK, wCookie, MTYPE_PLUGIN, 0, 0, 0); - // packEmptyMsg(&packet); // Message (unused) packPluginTypeId(&packet, wType); - packLEDWord(&packet, nBodyLen + 4); - packLEDWord(&packet, nBodyLen); - packBuffer(&packet, (LPBYTE)szBody, (WORD)nBodyLen); + packLEDWord(&packet, DWORD(nBodyLen + 4)); + packLEDWord(&packet, DWORD(nBodyLen)); + packBuffer(&packet, (LPBYTE)szBody, nBodyLen); SendDirectMessage(hContact, &packet); } diff --git a/protocols/IcqOscarJ/src/fam_01service.cpp b/protocols/IcqOscarJ/src/fam_01service.cpp index 57247e33d3..e756f8c2f0 100644 --- a/protocols/IcqOscarJ/src/fam_01service.cpp +++ b/protocols/IcqOscarJ/src/fam_01service.cpp @@ -31,7 +31,7 @@ extern capstr capXStatus[]; -void CIcqProto::handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info) +void CIcqProto::handleServiceFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info) { icq_packet packet; @@ -464,7 +464,7 @@ void CIcqProto::handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header } -char* CIcqProto::buildUinList(int subtype, WORD wMaxLen, MCONTACT *hContactResume) +char* CIcqProto::buildUinList(int subtype, size_t wMaxLen, MCONTACT *hContactResume) { MCONTACT hContact; WORD wCurrentLen = 0; @@ -484,7 +484,7 @@ char* CIcqProto::buildUinList(int subtype, WORD wMaxLen, MCONTACT *hContactResum while (hContact != NULL) { if (!getContactUid(hContact, &dwUIN, &szUID)) { - szLen[0] = strlennull(strUID(dwUIN, szUID)); + szLen[0] = (char)mir_strlen(strUID(dwUIN, szUID)); switch (subtype) { case BUL_VISIBLE: @@ -546,12 +546,12 @@ void CIcqProto::sendEntireListServ(WORD wFamily, WORD wSubtype, int listType) // send only about 100contacts per packet char *szList = buildUinList(listType, 0x3E8, &hResumeContact); - int nListLen = strlennull(szList); + size_t nListLen = mir_strlen(szList); if (nListLen) { icq_packet packet; - serverPacketInit(&packet, (WORD)(nListLen + 10)); + serverPacketInit(&packet, nListLen + 10); packFNACHeader(&packet, wFamily, wSubtype); - packBuffer(&packet, (LPBYTE)szList, (WORD)nListLen); + packBuffer(&packet, (LPBYTE)szList, nListLen); sendServPacket(&packet); } @@ -576,7 +576,7 @@ static void packShortCapability(icq_packet *packet, WORD wCapability) void CIcqProto::setUserInfo() { icq_packet packet; - WORD wAdditionalData = 0; + size_t wAdditionalData = 0; BYTE bXStatus = getContactXStatus(NULL); if (m_bAimEnabled) @@ -606,7 +606,7 @@ void CIcqProto::setUserInfo() wAdditionalData += 16; #endif - wAdditionalData += (WORD)CustomCapList.getCount() * 16; + wAdditionalData += CustomCapList.getCount() * 16; //MIM/PackName bool bHasPackName = false; @@ -617,12 +617,12 @@ void CIcqProto::setUserInfo() wAdditionalData += 16; } - serverPacketInit(&packet, (WORD)(62 + wAdditionalData)); + serverPacketInit(&packet, 62 + wAdditionalData); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_SET_USER_INFO); /* TLV(5): capability data */ packWord(&packet, 0x0005); - packWord(&packet, (WORD)(48 + wAdditionalData)); + packWord(&packet, WORD(48 + wAdditionalData)); #ifdef DBG_CAPMTN packDWord(&packet, 0x563FC809); // CAP_TYPING @@ -744,11 +744,11 @@ void CIcqProto::handleServUINSettings(int nPort, serverthread_info *info) //! Tricky code, this ensures that the status note will be saved to the directory SetStatusNote(szStatusNote, m_bGatewayMode ? 5000 : 2500, TRUE); - WORD wStatusNoteLen = strlennull(szStatusNote); - WORD wStatusMoodLen = strlennull(szMoodData); - WORD wSessionDataLen = (wStatusNoteLen ? wStatusNoteLen + 4 : 0) + 4 + wStatusMoodLen + 4; + size_t wStatusNoteLen = mir_strlen(szStatusNote); + size_t wStatusMoodLen = mir_strlen(szMoodData); + size_t wSessionDataLen = (wStatusNoteLen ? wStatusNoteLen + 4 : 0) + 4 + wStatusMoodLen + 4; - serverPacketInit(&packet, (WORD)(71 + (wSessionDataLen ? wSessionDataLen + 4 : 0))); + serverPacketInit(&packet, 71 + (wSessionDataLen ? wSessionDataLen + 4 : 0)); packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_STATUS); packDWord(&packet, 0x00060004); // TLV 6: Status mode and security flags packWord(&packet, GetMyStatusFlags()); // Status flags @@ -773,18 +773,18 @@ void CIcqProto::handleServUINSettings(int nPort, serverthread_info *info) if (wSessionDataLen) { // Pack session data packWord(&packet, 0x1D); // TLV 1D - packWord(&packet, wSessionDataLen); // TLV length + packWord(&packet, WORD(wSessionDataLen)); // TLV length packWord(&packet, 0x02); // Item Type if (wStatusNoteLen) { - packWord(&packet, 0x400 | (WORD)(wStatusNoteLen + 4)); // Flags + Item Length - packWord(&packet, wStatusNoteLen); // Text Length + packWord(&packet, 0x400 | WORD(wStatusNoteLen + 4)); // Flags + Item Length + packWord(&packet, WORD(wStatusNoteLen)); // Text Length packBuffer(&packet, (LPBYTE)szStatusNote, wStatusNoteLen); packWord(&packet, 0); // Encoding not specified (utf-8 is default) } else packWord(&packet, 0); // Flags + Item Length packWord(&packet, 0x0E); // Item Type - packWord(&packet, wStatusMoodLen); // Flags + Item Length + packWord(&packet, WORD(wStatusMoodLen)); // Flags + Item Length if (wStatusMoodLen) packBuffer(&packet, (LPBYTE)szMoodData, wStatusMoodLen); // Mood diff --git a/protocols/IcqOscarJ/src/fam_02location.cpp b/protocols/IcqOscarJ/src/fam_02location.cpp index 73c8923288..1a3953c717 100644 --- a/protocols/IcqOscarJ/src/fam_02location.cpp +++ b/protocols/IcqOscarJ/src/fam_02location.cpp @@ -31,7 +31,7 @@ extern const char* cliSpamBot; -void CIcqProto::handleLocationFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader) +void CIcqProto::handleLocationFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader) { switch (pSnacHeader->wSubtype) { case ICQ_LOCATION_RIGHTS_REPLY: // Reply to CLI_REQLOCATION @@ -90,7 +90,7 @@ static char* AimApplyEncoding(char* pszStr, const char* pszEncoding) return pszStr; } -void CIcqProto::handleLocationUserInfoReply(BYTE* buf, WORD wLen, DWORD dwCookie) +void CIcqProto::handleLocationUserInfoReply(BYTE* buf, size_t wLen, DWORD dwCookie) { DWORD dwUIN; uid_str szUID; diff --git a/protocols/IcqOscarJ/src/fam_03buddy.cpp b/protocols/IcqOscarJ/src/fam_03buddy.cpp index 4679ca82c5..8b20642221 100644 --- a/protocols/IcqOscarJ/src/fam_03buddy.cpp +++ b/protocols/IcqOscarJ/src/fam_03buddy.cpp @@ -31,7 +31,7 @@ extern const char* cliSpamBot; -void CIcqProto::handleBuddyFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info) +void CIcqProto::handleBuddyFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info) { switch (pSnacHeader->wSubtype) { case ICQ_USER_ONLINE: @@ -69,7 +69,7 @@ void CIcqProto::handleBuddyFam(BYTE *pBuffer, WORD wBufferLength, snac_header *p } } -void CIcqProto::handleReplyBuddy(BYTE *buf, WORD wPackLen) +void CIcqProto::handleReplyBuddy(BYTE *buf, size_t wPackLen) { oscar_tlv_chain *pChain = readIntoTLVChain(&buf, wPackLen, 0); if (pChain) { @@ -150,7 +150,7 @@ int unpackSessionDataItem(oscar_tlv_chain *pChain, WORD wItemType, BYTE **ppItem // TLV(2F) unknown key // TLV(30) unknown timestamp -void CIcqProto::handleUserOnline(BYTE *buf, WORD wLen, serverthread_info *info) +void CIcqProto::handleUserOnline(BYTE *buf, size_t wLen, serverthread_info *info) { DWORD dwPort = 0; DWORD dwRealIP = 0; @@ -519,7 +519,7 @@ void CIcqProto::handleUserOnline(BYTE *buf, WORD wLen, serverthread_info *info) } } -void CIcqProto::handleUserOffline(BYTE *buf, WORD wLen) +void CIcqProto::handleUserOffline(BYTE *buf, size_t wLen) { DWORD dwUIN; uid_str szUID; @@ -671,7 +671,7 @@ void CIcqProto::parseStatusNote(DWORD dwUin, char *szUid, MCONTACT hContact, osc if (dwStatusNoteTS > getDword(hContact, DBSETTING_STATUS_NOTE_TIME, 0)) { DBVARIANT dbv = {DBVT_DELETED}; - if (strlennull(szStatusNote) || (!getString(hContact, DBSETTING_STATUS_NOTE, &dbv) && (dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) && strlennull(dbv.pszVal))) + if (mir_strlen(szStatusNote) || (!getString(hContact, DBSETTING_STATUS_NOTE, &dbv) && (dbv.type == DBVT_ASCIIZ || dbv.type == DBVT_UTF8) && mir_strlen(dbv.pszVal))) debugLogA("%s changed status note to \"%s\"", strUID(dwUin, szUid), szStatusNote ? szStatusNote : ""); db_free(&dbv); @@ -699,7 +699,7 @@ void CIcqProto::parseStatusNote(DWORD dwUin, char *szUid, MCONTACT hContact, osc } } -void CIcqProto::handleNotifyRejected(BYTE *buf, WORD wPackLen) +void CIcqProto::handleNotifyRejected(BYTE *buf, size_t wPackLen) { DWORD dwUIN; uid_str szUID; diff --git a/protocols/IcqOscarJ/src/fam_04message.cpp b/protocols/IcqOscarJ/src/fam_04message.cpp index 203ac55b95..2e50ee5b62 100644 --- a/protocols/IcqOscarJ/src/fam_04message.cpp +++ b/protocols/IcqOscarJ/src/fam_04message.cpp @@ -29,7 +29,7 @@ #include "icqoscar.h" -void CIcqProto::handleMsgFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader) +void CIcqProto::handleMsgFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader) { switch (pSnacHeader->wSubtype) { case ICQ_MSG_SRV_ERROR: // SNAC(4, 0x01) @@ -87,7 +87,7 @@ static void setMsgChannelParams(CIcqProto *ppro, WORD wChan, DWORD dwFlags) ppro->sendServPacket(&packet); } -void CIcqProto::handleReplyICBM(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleReplyICBM(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { // we don't care about the stuff, just change the params DWORD dwFlags = 0x00000303; @@ -101,7 +101,7 @@ void CIcqProto::handleReplyICBM(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) setMsgChannelParams(this, 0x0000, dwFlags); } -void CIcqProto::handleRecvServMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleRecvServMsg(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { DWORD dwUin; DWORD dwMsgID1; @@ -200,10 +200,10 @@ char* CIcqProto::convertMsgToUserSpecificUtf(MCONTACT hContact, const char *szMs return usMsg; } -void CIcqProto::handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) +void CIcqProto::handleRecvServMsgType1(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) { WORD wTLVType; - WORD wTLVLen; + size_t wTLVLen; BYTE* pMsgTLV; if (wLen < 4) { // just perform basic structure check @@ -278,7 +278,7 @@ void CIcqProto::handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char * usMsgPart[wMsgLen / sizeof(WCHAR)] = 0; szMsgPart = make_utf8_string(usMsgPart); - if (!IsUSASCII(szMsgPart, strlennull(szMsgPart))) + if (!IsUSASCII(szMsgPart, mir_strlen(szMsgPart))) bMsgPartUnicode = TRUE; SAFE_FREE(&usMsgPart); } @@ -311,18 +311,18 @@ void CIcqProto::handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char * szMsgPart = szUtfPart; } // Append the new message part - szMsg = (char*)SAFE_REALLOC(szMsg, strlennull(szMsg) + strlennull(szMsgPart) + 1); + szMsg = (char*)SAFE_REALLOC(szMsg, mir_strlen(szMsg) + mir_strlen(szMsgPart) + 1); strcat(szMsg, szMsgPart); SAFE_FREE(&szMsgPart); } wMsgPart++; } - if (strlennull(szMsg)) { + if (mir_strlen(szMsg)) { if (_strnicmp(szMsg, "", 6) == 0) // strip HTML formating from AIM message - szMsg = EliminateHtml(szMsg, strlennull(szMsg)); + szMsg = EliminateHtml(szMsg, mir_strlen(szMsg)); - if (!pre.flags && !IsUSASCII(szMsg, strlennull(szMsg))) { // message is Ansi and contains national characters, create Unicode part by codepage + if (!pre.flags && !IsUSASCII(szMsg, mir_strlen(szMsg))) { // message is Ansi and contains national characters, create Unicode part by codepage char *usMsg = convertMsgToUserSpecificUtf(hContact, szMsg); if (usMsg) { SAFE_FREE(&szMsg); @@ -338,7 +338,8 @@ void CIcqProto::handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char * if (!(dwRef & 0x80000000) && FindCookie(dwRef, NULL, (void**)&cookie)) { cookie->nMessages++; - WORD wTimeTLVType, wTimeTLVLen; + WORD wTimeTLVType; + size_t wTimeTLVLen; BYTE *pTimeTLV; unpackTypedTLV(buf, wLen, 0x16, &wTimeTLVType, &wTimeTLVLen, &pTimeTLV); if (pTimeTLV && wTimeTLVType == 0x16 && wTimeTLVLen == 4) { // found Offline timestamp @@ -375,10 +376,10 @@ void CIcqProto::handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char * SAFE_FREE((void**)&pMsgTLV); } -void CIcqProto::handleRecvServMsgType2(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) +void CIcqProto::handleRecvServMsgType2(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) { WORD wTLVType; - WORD wTLVLen; + size_t wTLVLen; BYTE *pDataBuf = NULL; if (wLen < 4) { @@ -571,7 +572,7 @@ void CIcqProto::handleRecvServMsgType2(BYTE *buf, WORD wLen, DWORD dwUin, char * } -void CIcqProto::parseServRelayData(BYTE *pDataBuf, WORD wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType) +void CIcqProto::parseServRelayData(BYTE *pDataBuf, size_t wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType) { WORD wId; @@ -775,7 +776,7 @@ void CIcqProto::parseServRelayData(BYTE *pDataBuf, WORD wLen, MCONTACT hContact, else debugLogA("Unknown wId1 (%u) in message (format 2)", wId); } -void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType, BYTE bFlags, WORD wStatus, WORD wCookie, WORD wVersion) +void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, size_t wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType, BYTE bFlags, WORD wStatus, WORD wCookie, WORD wVersion) { int nTypeId; WORD wFunction; @@ -786,8 +787,7 @@ void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hCo if (!unpackPluginTypeId(&pDataBuf, &wLen, &nTypeId, &wFunction, FALSE)) return; if (wLen > 8) { - DWORD dwLengthToEnd; - DWORD dwDataLen; + size_t dwLengthToEnd, dwDataLen; // Length of remaining data unpackLEDWord(&pDataBuf, &dwLengthToEnd); @@ -810,7 +810,7 @@ void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hCo memcpy(szMsg, pDataBuf, dwDataLen); szMsg[dwDataLen] = '\0'; pDataBuf += dwDataLen; - wLen -= (WORD)dwDataLen; + wLen -= dwDataLen; handleFileAck(pDataBuf, wLen, dwUin, wCookie, wStatus, szMsg); } @@ -825,7 +825,7 @@ void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hCo memcpy(szMsg, pDataBuf, dwDataLen); szMsg[dwDataLen] = '\0'; pDataBuf += dwDataLen; - wLen -= (WORD)dwDataLen; + wLen -= dwDataLen; handleFileRequest(pDataBuf, wLen, dwUin, wCookie, dwMsgID1, dwMsgID2, szMsg, 8, FALSE); } @@ -840,7 +840,7 @@ void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hCo memcpy(szMsg, pDataBuf, dwDataLen); szMsg[dwDataLen] = '\0'; pDataBuf += dwDataLen; - wLen -= (WORD)dwDataLen; + wLen -= dwDataLen; // handleChatRequest(pDataBuf, wLen, dwUin, wCookie, dwMsgID1, dwMsgID2, szMsg, 8); } @@ -884,14 +884,14 @@ void CIcqProto::parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hCo pMsgAck.wCookie = wCookie; pMsgAck.msgType = nTypeId; pMsgAck.bFlags = bFlags; - handleMessageTypes(dwUin, szUID, time(NULL), dwMsgID1, dwMsgID2, wCookie, wVersion, nTypeId, bFlags, wAckType, dwLengthToEnd, (WORD)dwDataLen, (char*)pDataBuf, MTF_PLUGIN, &pMsgAck); + handleMessageTypes(dwUin, szUID, time(NULL), dwMsgID1, dwMsgID2, wCookie, wVersion, nTypeId, bFlags, wAckType, dwLengthToEnd, dwDataLen, (char*)pDataBuf, MTF_PLUGIN, &pMsgAck); } else debugLogA("Unsupported plugin message type %d", nTypeId); } else debugLogA("Error: Malformed server plugin message"); } -void CIcqProto::handleRecvServMsgContacts(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand) +void CIcqProto::handleRecvServMsgContacts(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand) { MCONTACT hContact = HContactFromUID(dwUin, szUID, NULL); @@ -964,7 +964,7 @@ void CIcqProto::handleRecvServMsgContacts(BYTE *buf, WORD wLen, DWORD dwUin, cha valid = 0; } else { // aim contact - if (!strlennull(szUid)) + if (!mir_strlen(szUid)) valid = 0; } iContact++; @@ -1016,7 +1016,8 @@ void CIcqProto::handleRecvServMsgContacts(BYTE *buf, WORD wLen, DWORD dwUin, cha unpackWord(&pBuffer, &wNickLen); nLen -= 2; if (nLen >= wNickLen) { - WORD wNickTLV, wNickTLVLen; + WORD wNickTLV; + size_t wNickTLVLen; char *pNick = NULL; unpackTypedTLV(pBuffer, wNickLen, 0x01, &wNickTLV, &wNickTLVLen, (LPBYTE*)&pNick); @@ -1087,10 +1088,10 @@ void CIcqProto::handleRecvServMsgContacts(BYTE *buf, WORD wLen, DWORD dwUin, cha } } -void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) +void CIcqProto::handleRecvServMsgType4(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef) { WORD wTLVType; - WORD wTLVLen; + size_t wTLVLen; BYTE* pDataBuf; DWORD dwUin2; @@ -1108,8 +1109,7 @@ void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char * BYTE bMsgType; BYTE bFlags; BYTE* pmsg = pDataBuf; - WORD wMsgLen; - + size_t wMsgLen; unpackLEDWord(&pmsg, &dwUin2); @@ -1125,7 +1125,8 @@ void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char * DWORD dwRecvTime = (DWORD)time(NULL); if (!(dwRef & 0x80000000) && FindCookie(dwRef, NULL, (void**)&cookie)) { - WORD wTimeTLVType, wTimeTLVLen; + WORD wTimeTLVType; + size_t wTimeTLVLen; BYTE *pTimeTLV = NULL; cookie->nMessages++; @@ -1140,7 +1141,7 @@ void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char * } if (bMsgType == MTYPE_PLUGIN) { - WORD wLen = wTLVLen - 8; + size_t wLen = wTLVLen - 8; int typeId; debugLogA("Parsing Greeting message through server"); @@ -1149,8 +1150,7 @@ void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char * wLen -= wMsgLen; if (unpackPluginTypeId(&pmsg, &wLen, &typeId, NULL, FALSE) && wLen > 8) { - DWORD dwLengthToEnd; - DWORD dwDataLen; + size_t dwLengthToEnd, dwDataLen; // Length of remaining data unpackLEDWord(&pmsg, &dwLengthToEnd); @@ -1164,7 +1164,7 @@ void CIcqProto::handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char * if (typeId) { uid_str szUID; - handleMessageTypes(dwUin, szUID, dwRecvTime, dwMsgID1, dwMsgID2, 0, 0, typeId, bFlags, 0, dwLengthToEnd, (WORD)dwDataLen, (char*)pmsg, MTF_PLUGIN, NULL); + handleMessageTypes(dwUin, szUID, dwRecvTime, dwMsgID1, dwMsgID2, 0, 0, typeId, bFlags, 0, dwLengthToEnd, dwDataLen, (char*)pmsg, MTF_PLUGIN, NULL); } else debugLogA("Unsupported plugin message type %d", typeId); } @@ -1243,11 +1243,9 @@ static int TypeGUIDToTypeId(DWORD dwGuid1, DWORD dwGuid2, DWORD dwGuid3, DWORD d } -int CIcqProto::unpackPluginTypeId(BYTE **pBuffer, WORD *pwLen, int *pTypeId, WORD *pFunctionId, BOOL bThruDC) +int CIcqProto::unpackPluginTypeId(BYTE **pBuffer, size_t *pwLen, int *pTypeId, WORD *pFunctionId, BOOL bThruDC) { - WORD wLen = *pwLen; - WORD wInfoLen; - DWORD dwPluginNameLen; + size_t wLen = *pwLen, wInfoLen, dwPluginNameLen; DWORD q1, q2, q3, q4; WORD qt; @@ -1275,7 +1273,7 @@ int CIcqProto::unpackPluginTypeId(BYTE **pBuffer, WORD *pwLen, int *pTypeId, WOR char *szPluginName = (char *)_alloca(dwPluginNameLen + 1); memcpy(szPluginName, *pBuffer, dwPluginNameLen); szPluginName[dwPluginNameLen] = '\0'; - wLen -= (WORD)dwPluginNameLen; + wLen -= dwPluginNameLen; *pBuffer += dwPluginNameLen; @@ -1284,7 +1282,7 @@ int CIcqProto::unpackPluginTypeId(BYTE **pBuffer, WORD *pwLen, int *pTypeId, WOR NetLog_Uni(bThruDC, "Error: Unknown type {%08x-%08x-%08x-%08x:%04x}: %s", q1, q2, q3, q4, qt, szPluginName); if (wInfoLen >= 22 + dwPluginNameLen) { // sanity checking - wInfoLen -= (WORD)(22 + dwPluginNameLen); + wInfoLen -= 22 + dwPluginNameLen; // check if enough data is available - skip remaining bytes of info block if (wLen >= wInfoLen) { @@ -1443,7 +1441,7 @@ void CIcqProto::handleStatusMsgReply(const char *szPrefix, MCONTACT hContact, DW } -HANDLE CIcqProto::handleMessageAck(DWORD dwUin, char *szUID, WORD wCookie, WORD wVersion, int type, WORD wMsgLen, PBYTE buf, BYTE bFlags, int nMsgFlags) +HANDLE CIcqProto::handleMessageAck(DWORD dwUin, char *szUID, WORD wCookie, WORD wVersion, int type, size_t wMsgLen, PBYTE buf, BYTE bFlags, int nMsgFlags) { if (bFlags == 3) { MCONTACT hCookieContact; @@ -1495,7 +1493,7 @@ void CIcqProto::sendMessageTypesAck(MCONTACT hContact, int bUnicode, message_ack /* this function also processes direct packets, so it should be bulletproof */ /* pMsg points to the beginning of the message */ -void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, DWORD dwMsgID, DWORD dwMsgID2, WORD wCookie, WORD wVersion, int type, int flags, WORD wAckType, DWORD dwDataLen, WORD wMsgLen, char *pMsg, int nMsgFlags, message_ack_params *pAckParams) +void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, DWORD dwMsgID, DWORD dwMsgID2, WORD wCookie, WORD wVersion, int type, int flags, WORD wAckType, size_t dwDataLen, size_t wMsgLen, char *pMsg, int nMsgFlags, message_ack_params *pAckParams) { MCONTACT hContact = INVALID_CONTACT_ID; BOOL bThruDC = (nMsgFlags & MTF_DIRECT) == MTF_DIRECT; @@ -1588,7 +1586,7 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, hContact = HContactFromUIN(dwUin, &bAdded); sendMessageTypesAck(hContact, pre.flags & PREF_UTF, pAckParams); - if (!pre.flags && !IsUSASCII(szMsg, strlennull(szMsg))) { // message is Ansi and contains national characters, create Unicode part by codepage + if (!pre.flags && !IsUSASCII(szMsg, mir_strlen(szMsg))) { // message is Ansi and contains national characters, create Unicode part by codepage char *usMsg = convertMsgToUserSpecificUtf(hContact, szMsg); if (usMsg) { SAFE_FREE(&szMsg); @@ -1615,7 +1613,7 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, char *szTitle = ICQTranslateUtf(LPGEN("Incoming URL:")); char *szDataDescr = ansi_to_utf8(pszMsgField[0]); char *szDataUrl = ansi_to_utf8(pszMsgField[1]); - char *szBlob = (char *)SAFE_MALLOC(strlennull(szTitle) + strlennull(szDataDescr) + strlennull(szDataUrl) + 8); + char *szBlob = (char *)SAFE_MALLOC(mir_strlen(szTitle) + mir_strlen(szDataDescr) + mir_strlen(szDataUrl) + 8); strcpy(szBlob, szTitle); strcat(szBlob, " "); strcat(szBlob, szDataDescr); // Description @@ -1644,16 +1642,16 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, { PROTORECVEVENT pre = { 0 }; pre.timestamp = dwTimestamp; - pre.lParam = sizeof(DWORD) * 2 + strlennull(pszMsgField[0]) + strlennull(pszMsgField[1]) + strlennull(pszMsgField[2]) + strlennull(pszMsgField[3]) + strlennull(pszMsgField[5]) + 5; + pre.lParam = sizeof(DWORD) * 2 + mir_strlen(pszMsgField[0]) + mir_strlen(pszMsgField[1]) + mir_strlen(pszMsgField[2]) + mir_strlen(pszMsgField[3]) + mir_strlen(pszMsgField[5]) + 5; // blob is: uin(DWORD), hcontact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ), reason(ASCIIZ) char *szBlob, *pCurBlob = szBlob = (char *)_alloca(pre.lParam); *(DWORD*)pCurBlob = dwUin; pCurBlob += sizeof(DWORD); *(DWORD*)pCurBlob = DWORD(hContact); pCurBlob += sizeof(DWORD); - strcpy((char*)pCurBlob, pszMsgField[0]); pCurBlob += strlennull((char*)pCurBlob) + 1; - strcpy((char*)pCurBlob, pszMsgField[1]); pCurBlob += strlennull((char*)pCurBlob) + 1; - strcpy((char*)pCurBlob, pszMsgField[2]); pCurBlob += strlennull((char*)pCurBlob) + 1; - strcpy((char*)pCurBlob, pszMsgField[3]); pCurBlob += strlennull((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[0]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[1]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[2]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[3]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; strcpy((char*)pCurBlob, pszMsgField[5]); pre.szMessage = (char *)szBlob; ProtoChainRecv(hContact, PSR_AUTH, 0, (LPARAM)&pre); @@ -1669,13 +1667,13 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, hContact = HContactFromUIN(dwUin, &bAdded); { // blob is: uin(DWORD), hcontact(HANDLE), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ) - DWORD cbBlob = sizeof(DWORD) * 2 + strlennull(pszMsgField[0]) + strlennull(pszMsgField[1]) + strlennull(pszMsgField[2]) + strlennull(pszMsgField[3]) + 4; + size_t cbBlob = sizeof(DWORD) * 2 + mir_strlen(pszMsgField[0]) + mir_strlen(pszMsgField[1]) + mir_strlen(pszMsgField[2]) + mir_strlen(pszMsgField[3]) + 4; PBYTE pBlob, pCurBlob = pBlob = (PBYTE)_alloca(cbBlob); *(DWORD*)pCurBlob = dwUin; pCurBlob += sizeof(DWORD); *(DWORD*)pCurBlob = DWORD(hContact); pCurBlob += sizeof(DWORD); - strcpy((char*)pCurBlob, pszMsgField[0]); pCurBlob += strlennull((char*)pCurBlob) + 1; - strcpy((char*)pCurBlob, pszMsgField[1]); pCurBlob += strlennull((char*)pCurBlob) + 1; - strcpy((char*)pCurBlob, pszMsgField[2]); pCurBlob += strlennull((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[0]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[1]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; + strcpy((char*)pCurBlob, pszMsgField[2]); pCurBlob += mir_strlen((char*)pCurBlob) + 1; strcpy((char*)pCurBlob, pszMsgField[3]); AddEvent(NULL, EVENTTYPE_ADDED, dwTimestamp, 0, cbBlob, pBlob); } @@ -1687,7 +1685,7 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, int nContacts; if (nMsgFields < 3 || (nContacts = strtol(pszMsgField[0], &pszNContactsEnd, 10)) == 0 || - pszNContactsEnd - pszMsgField[0] != (int)strlennull(pszMsgField[0]) || + pszNContactsEnd - pszMsgField[0] != (int)mir_strlen(pszMsgField[0]) || nMsgFields < nContacts * 2 + 1) { NetLog_Uni(bThruDC, "Malformed '%s' message", "contacts"); @@ -1705,7 +1703,7 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, valid = 0; } else { // aim contact - if (!strlennull(pszMsgField[1 + i * 2])) + if (!mir_strlen(pszMsgField[1 + i * 2])) valid = 0; } isrList[i]->hdr.id = ansi_to_tchar(pszMsgField[1 + i * 2]); @@ -1767,10 +1765,10 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, debugLogA("Malformed '%s' message", "web pager"); else { // blob is: body(ASCIIZ), name(ASCIIZ), email(ASCIIZ) - DWORD cbBlob = strlennull(pszMsgField[0]) + strlennull(pszMsgField[3]) + strlennull(pszMsgField[5]) + 3; + size_t cbBlob = mir_strlen(pszMsgField[0]) + mir_strlen(pszMsgField[3]) + mir_strlen(pszMsgField[5]) + 3; PBYTE pBlob, pCurBlob = pBlob = (PBYTE)_alloca(cbBlob); - strcpy((char *)pCurBlob, pszMsgField[5]); pCurBlob += strlennull((char *)pCurBlob) + 1; - strcpy((char *)pCurBlob, pszMsgField[0]); pCurBlob += strlennull((char *)pCurBlob) + 1; + strcpy((char *)pCurBlob, pszMsgField[5]); pCurBlob += mir_strlen((char *)pCurBlob) + 1; + strcpy((char *)pCurBlob, pszMsgField[0]); pCurBlob += mir_strlen((char *)pCurBlob) + 1; strcpy((char *)pCurBlob, pszMsgField[3]); AddEvent(NULL, ICQEVENTTYPE_WEBPAGER, dwTimestamp, 0, cbBlob, pBlob); @@ -1783,10 +1781,10 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, debugLogA("Malformed '%s' message", "e-mail express"); else { // blob is: body(ASCIIZ), name(ASCIIZ), email(ASCIIZ) - DWORD cbBlob = strlennull(pszMsgField[0]) + strlennull(pszMsgField[3]) + strlennull(pszMsgField[5]) + 3; + size_t cbBlob = mir_strlen(pszMsgField[0]) + mir_strlen(pszMsgField[3]) + mir_strlen(pszMsgField[5]) + 3; PBYTE pBlob, pCurBlob = pBlob = (PBYTE)_alloca(cbBlob); - strcpy((char *)pCurBlob, pszMsgField[5]); pCurBlob += strlennull((char *)pCurBlob) + 1; - strcpy((char *)pCurBlob, pszMsgField[0]); pCurBlob += strlennull((char *)pCurBlob) + 1; + strcpy((char *)pCurBlob, pszMsgField[5]); pCurBlob += mir_strlen((char *)pCurBlob) + 1; + strcpy((char *)pCurBlob, pszMsgField[0]); pCurBlob += mir_strlen((char *)pCurBlob) + 1; strcpy((char *)pCurBlob, pszMsgField[3]); AddEvent(NULL, ICQEVENTTYPE_EMAILEXPRESS, dwTimestamp, 0, cbBlob, pBlob); @@ -1903,7 +1901,7 @@ void CIcqProto::handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, } -void CIcqProto::handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleRecvMsgResponse(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { DWORD dwUin; uid_str szUid; @@ -2027,7 +2025,7 @@ void CIcqProto::handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD d } if (bFlags == 3) // A status message reply - handleStatusMsgReply("SNAC(4.B) ", hContact, dwUin, wVersion, bMsgType, (WORD)dwCookie, (char*)(buf + 2), 0); + handleStatusMsgReply("SNAC(4.B) ", hContact, dwUin, wVersion, bMsgType, dwCookie, (char*)(buf + 2), 0); else { // An ack of some kind int ackType; @@ -2119,7 +2117,7 @@ void CIcqProto::handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD d if (dwDataLen > 0) memcpy(szMsg, buf, dwDataLen); szMsg[dwDataLen] = '\0'; - handleStatusMsgReply("SNAC(4.B) ", hContact, dwUin, wVersion, pCookieData->nAckType, (WORD)dwCookie, szMsg, 0); + handleStatusMsgReply("SNAC(4.B) ", hContact, dwUin, wVersion, pCookieData->nAckType, dwCookie, szMsg, 0); ReleaseCookie(dwCookie); return; @@ -2144,7 +2142,7 @@ void CIcqProto::handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD d memcpy(szMsg, buf, dwDataLen); szMsg[dwDataLen] = '\0'; buf += dwDataLen; - wLen -= (WORD)dwDataLen; + wLen -= dwDataLen; handleFileAck(buf, wLen, dwUin, dwCookie, wStatus, szMsg); // No success protoack will be sent here, since all file requests @@ -2242,7 +2240,7 @@ void CIcqProto::handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD d } // A response to a CLI_SENDMSG -void CIcqProto::handleRecvServMsgError(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwSequence) +void CIcqProto::handleRecvServMsgError(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwSequence) { WORD wError; char *pszErrorMessage; @@ -2272,7 +2270,7 @@ void CIcqProto::handleRecvServMsgError(BYTE *buf, WORD wLen, WORD wFlags, DWORD // we failed to request away message the normal way, try it AIM way icq_packet packet; - serverPacketInit(&packet, (WORD)(13 + getUINLen(dwUin))); + serverPacketInit(&packet, 13 + getUINLen(dwUin)); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_REQ_USER_INFO, 0, (WORD)dwSequence); packWord(&packet, 0x03); packUIN(&packet, dwUin); @@ -2392,7 +2390,7 @@ void CIcqProto::handleRecvServMsgError(BYTE *buf, WORD wLen, WORD wFlags, DWORD } -void CIcqProto::handleServerAck(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwSequence) +void CIcqProto::handleServerAck(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwSequence) { DWORD dwUin; uid_str szUID; @@ -2467,7 +2465,7 @@ void CIcqProto::handleServerAck(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwSeque } -void CIcqProto::handleMissedMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleMissedMsg(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { DWORD dwUin; uid_str szUid; @@ -2499,7 +2497,7 @@ void CIcqProto::handleMissedMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) wLen -= 2; // Read past user info TLVs - oscar_tlv_chain *pChain = readIntoTLVChain(&buf, (WORD)(wLen - 4), wTLVCount); + oscar_tlv_chain *pChain = readIntoTLVChain(&buf, wLen - 4, wTLVCount); if (pChain) disposeChain(&pChain); @@ -2542,7 +2540,7 @@ void CIcqProto::handleMissedMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) } -void CIcqProto::handleOffineMessagesReply(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleOffineMessagesReply(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { cookie_offline_messages *cookie; @@ -2576,7 +2574,7 @@ void CIcqProto::handleOffineMessagesReply(BYTE *buf, WORD wLen, WORD wFlags, DWO } -void CIcqProto::handleTypingNotification(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef) +void CIcqProto::handleTypingNotification(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef) { DWORD dwUin; uid_str szUid; @@ -2653,7 +2651,7 @@ void CIcqProto::sendTypingNotification(MCONTACT hContact, WORD wMTNCode) if (getContactUid(hContact, &dwUin, &szUid)) return; // Invalid contact - WORD wLen = getUIDLen(dwUin, szUid); + size_t wLen = getUIDLen(dwUin, szUid); icq_packet packet; serverPacketInit(&packet, 23 + wLen); diff --git a/protocols/IcqOscarJ/src/fam_09bos.cpp b/protocols/IcqOscarJ/src/fam_09bos.cpp index 9b486ff60b..a8b84290be 100644 --- a/protocols/IcqOscarJ/src/fam_09bos.cpp +++ b/protocols/IcqOscarJ/src/fam_09bos.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleBosFam(unsigned char *pBuffer, WORD wBufferLength, snac_header* pSnacHeader) +void CIcqProto::handleBosFam(unsigned char *pBuffer, size_t wBufferLength, snac_header* pSnacHeader) { switch (pSnacHeader->wSubtype) { case ICQ_PRIVACY_RIGHTS_REPLY: // Reply to CLI_REQBOS @@ -51,7 +51,7 @@ void CIcqProto::handleBosFam(unsigned char *pBuffer, WORD wBufferLength, snac_he } } -void CIcqProto::handlePrivacyRightsReply(unsigned char *pBuffer, WORD wBufferLength) +void CIcqProto::handlePrivacyRightsReply(unsigned char *pBuffer, size_t wBufferLength) { if (wBufferLength >= 12) { oscar_tlv_chain* pChain = readIntoTLVChain(&pBuffer, wBufferLength, 0); diff --git a/protocols/IcqOscarJ/src/fam_0alookup.cpp b/protocols/IcqOscarJ/src/fam_0alookup.cpp index 0f25e47b06..c05833eb92 100644 --- a/protocols/IcqOscarJ/src/fam_0alookup.cpp +++ b/protocols/IcqOscarJ/src/fam_0alookup.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleLookupFam(BYTE *pBuffer, WORD wBufferLength, snac_header* pSnacHeader) +void CIcqProto::handleLookupFam(BYTE *pBuffer, size_t wBufferLength, snac_header* pSnacHeader) { switch (pSnacHeader->wSubtype) { @@ -78,7 +78,7 @@ void CIcqProto::ReleaseLookupCookie(DWORD dwCookie, cookie_search *pCookie) } } -void CIcqProto::handleLookupEmailReply(BYTE* buf, WORD wLen, DWORD dwCookie) +void CIcqProto::handleLookupEmailReply(BYTE* buf, size_t wLen, DWORD dwCookie) { ICQSEARCHRESULT sr = { 0 }; oscar_tlv_chain *pChain; diff --git a/protocols/IcqOscarJ/src/fam_0bstatus.cpp b/protocols/IcqOscarJ/src/fam_0bstatus.cpp index 3cf16f39ed..f56661315e 100644 --- a/protocols/IcqOscarJ/src/fam_0bstatus.cpp +++ b/protocols/IcqOscarJ/src/fam_0bstatus.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleStatusFam(unsigned char *pBuffer, WORD wBufferLength, snac_header* pSnacHeader) +void CIcqProto::handleStatusFam(unsigned char *pBuffer, size_t wBufferLength, snac_header* pSnacHeader) { switch (pSnacHeader->wSubtype) { diff --git a/protocols/IcqOscarJ/src/fam_13servclist.cpp b/protocols/IcqOscarJ/src/fam_13servclist.cpp index 13d3958ec8..7ff96e0b9a 100644 --- a/protocols/IcqOscarJ/src/fam_13servclist.cpp +++ b/protocols/IcqOscarJ/src/fam_13servclist.cpp @@ -25,10 +25,9 @@ #include "icqoscar.h" -static int unpackServerListItem(BYTE **pbuf, WORD *pwLen, char *pszRecordName, WORD *pwGroupId, WORD *pwItemId, WORD *pwItemType, WORD *pwTlvLength); +static int unpackServerListItem(BYTE **pbuf, size_t *pwLen, char *pszRecordName, WORD *pwGroupId, WORD *pwItemId, WORD *pwItemType, size_t *pwTlvLength); - -void CIcqProto::handleServCListFam(BYTE *pBuffer, WORD wBufferLength, snac_header* pSnacHeader, serverthread_info *info) +void CIcqProto::handleServCListFam(BYTE *pBuffer, size_t wBufferLength, snac_header* pSnacHeader, serverthread_info *info) { switch (pSnacHeader->wSubtype) { case ICQ_LISTS_ACK: // UPDATE_ACK @@ -137,7 +136,8 @@ void CIcqProto::handleServCListFam(BYTE *pBuffer, WORD wBufferLength, snac_heade int nItems = 0; while (wBufferLength >= 10) { - WORD wGroupId, wItemId, wItemType, wTlvLen; + WORD wGroupId, wItemId, wItemType; + size_t wTlvLen; uid_str szRecordName; if (unpackServerListItem(&pBuffer, &wBufferLength, szRecordName, &wGroupId, &wItemId, &wItemType, &wTlvLen)) { @@ -231,9 +231,9 @@ void CIcqProto::handleServCListFam(BYTE *pBuffer, WORD wBufferLength, snac_heade } -static int unpackServerListItem(BYTE **pbuf, WORD *pwLen, char *pszRecordName, WORD *pwGroupId, WORD *pwItemId, WORD *pwItemType, WORD *pwTlvLength) +static int unpackServerListItem(BYTE **pbuf, size_t *pwLen, char *pszRecordName, WORD *pwGroupId, WORD *pwItemId, WORD *pwItemType, size_t *pwTlvLength) { - WORD wRecordNameLen; + size_t wRecordNameLen; // The name of the entry. If this is a group header, then this // is the name of the group. If it is a plain contact list entry, @@ -267,7 +267,7 @@ static int unpackServerListItem(BYTE **pbuf, WORD *pwLen, char *pszRecordName, W } -void CIcqProto::handleServerCListRightsReply(BYTE *buf, WORD wLen) +void CIcqProto::handleServerCListRightsReply(BYTE *buf, size_t wLen) { /* received list rights, store the item limits for future use */ oscar_tlv_chain* chain; @@ -694,7 +694,7 @@ int CIcqProto::getServerDataFromItemTLV(oscar_tlv_chain* pChain, unsigned char * return datalen; } -void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, serverthread_info *info) +void CIcqProto::handleServerCListReply(BYTE *buf, size_t wLen, WORD wFlags, serverthread_info *info) { BYTE bySSIVersion; WORD wRecordCount; @@ -702,7 +702,7 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server WORD wGroupId; WORD wItemId; WORD wTlvType; - WORD wTlvLength; + size_t wTlvLength; BOOL bIsLastPacket; uid_str szRecordName; oscar_tlv_chain* pChain = NULL; @@ -710,7 +710,6 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server char *szActiveSrvGroup = NULL; WORD wActiveSrvGroupId = -1; - // If flag bit 1 is set, this is not the last // packet. If it is 0, this is the last packet // and there will be a timestamp at the end. @@ -804,14 +803,14 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server } char *szLocalGroup = getContactCListGroup(hContact); - if (!strlennull(szLocalGroup)) { // no CListGroup + if (!mir_strlen(szLocalGroup)) { // no CListGroup SAFE_FREE(&szLocalGroup); szLocalGroup = null_strdup(DEFAULT_SS_GROUP); } if (strcmpnull(szActiveSrvGroup, szLocalGroup) && - (strlennull(szActiveSrvGroup) >= strlennull(szLocalGroup) || (szActiveSrvGroup && _strnicmp(szActiveSrvGroup, szLocalGroup, strlennull(szLocalGroup))))) { // contact moved to new group or sub-group or not to master group + (mir_strlen(szActiveSrvGroup) >= mir_strlen(szLocalGroup) || (szActiveSrvGroup && _strnicmp(szActiveSrvGroup, szLocalGroup, mir_strlen(szLocalGroup))))) { // contact moved to new group or sub-group or not to master group bRegroup = 1; } if (bRegroup && !stricmpnull(DEFAULT_SS_GROUP, szActiveSrvGroup)) /// TODO: invent something more clever for "root" group @@ -855,8 +854,8 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server char *szOldNick; if (szOldNick = getSettingStringUtf(hContact, "CList", "MyHandle", NULL)) { - if ((strcmpnull(szOldNick, pszNick)) && (strlennull(pszNick) > 0)) { // check if the truncated nick changed, i.e. do not overwrite locally stored longer nick - if (strlennull(szOldNick) <= strlennull(pszNick) || strncmp(szOldNick, pszNick, null_strcut(szOldNick, MAX_SSI_TLV_NAME_SIZE))) { + if ((strcmpnull(szOldNick, pszNick)) && (mir_strlen(pszNick) > 0)) { // check if the truncated nick changed, i.e. do not overwrite locally stored longer nick + if (mir_strlen(szOldNick) <= mir_strlen(pszNick) || strncmp(szOldNick, pszNick, null_strcut(szOldNick, MAX_SSI_TLV_NAME_SIZE))) { // Yes, we really do need to delete it first. Otherwise the CLUI nick // cache isn't updated (I'll look into it) db_unset(hContact, "CList", "MyHandle"); @@ -865,7 +864,7 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server } SAFE_FREE(&szOldNick); } - else if (strlennull(pszNick) > 0) { + else if (mir_strlen(pszNick) > 0) { db_unset(hContact, "CList", "MyHandle"); db_set_utf(hContact, "CList", "MyHandle", pszNick); } @@ -898,13 +897,13 @@ void CIcqProto::handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, server char *szOldComment; if (szOldComment = getSettingStringUtf(hContact, "UserInfo", "MyNotes", NULL)) { - if ((strcmpnull(szOldComment, pszComment)) && (strlennull(pszComment) > 0)) // check if the truncated comment changed, i.e. do not overwrite locally stored longer comment - if (strlennull(szOldComment) <= strlennull(pszComment) || strncmp((char*)szOldComment, (char*)pszComment, null_strcut(szOldComment, MAX_SSI_TLV_COMMENT_SIZE))) + if ((strcmpnull(szOldComment, pszComment)) && (mir_strlen(pszComment) > 0)) // check if the truncated comment changed, i.e. do not overwrite locally stored longer comment + if (mir_strlen(szOldComment) <= mir_strlen(pszComment) || strncmp((char*)szOldComment, (char*)pszComment, null_strcut(szOldComment, MAX_SSI_TLV_COMMENT_SIZE))) db_set_utf(hContact, "UserInfo", "MyNotes", pszComment); SAFE_FREE((void**)&szOldComment); } - else if (strlennull(pszComment) > 0) + else if (mir_strlen(pszComment) > 0) db_set_utf(hContact, "UserInfo", "MyNotes", pszComment); } SAFE_FREE((void**)&pszComment); @@ -1357,7 +1356,7 @@ void CIcqProto::handleServerCListItemDelete(const char *szRecordName, WORD wGrou FreeServerID(wItemId, wItemType == SSI_ITEM_GROUP ? SSIT_GROUP : SSIT_ITEM); } -void CIcqProto::handleRecvAuthRequest(unsigned char *buf, WORD wLen) +void CIcqProto::handleRecvAuthRequest(unsigned char *buf, size_t wLen) { DWORD dwUin; uid_str szUid; @@ -1387,7 +1386,7 @@ void CIcqProto::handleRecvAuthRequest(unsigned char *buf, WORD wLen) if (szReason) { memcpy(szReason, buf, wReasonLen); szReason[wReasonLen] = '\0'; - nReasonLen = strlennull(szReason); + nReasonLen = (int)mir_strlen(szReason); char *temp = (char*)_alloca(nReasonLen + 2); if (!IsUSASCII(szReason, nReasonLen) && UTF8_IsValid(szReason) && utf8_decode_static(szReason, temp, nReasonLen + 1)) @@ -1407,7 +1406,7 @@ void CIcqProto::handleRecvAuthRequest(unsigned char *buf, WORD wLen) } else szNick = null_strdup(szUid); - int nNickLen = strlennull(szNick); + size_t nNickLen = mir_strlen(szNick); pre.lParam += nNickLen + nReasonLen; @@ -1441,15 +1440,13 @@ void CIcqProto::handleRecvAuthRequest(unsigned char *buf, WORD wLen) SAFE_FREE(&szReason); } -void CIcqProto::handleRecvAdded(unsigned char *buf, WORD wLen) +void CIcqProto::handleRecvAdded(unsigned char *buf, size_t wLen) { DWORD dwUin; uid_str szUid; - DWORD cbBlob; PBYTE pBlob, pCurBlob; int bAdded; char* szNick; - int nNickLen; DBVARIANT dbv = { 0 }; if (!unpackUID(&buf, &wLen, &dwUin, &szUid)) return; @@ -1461,17 +1458,17 @@ void CIcqProto::handleRecvAdded(unsigned char *buf, WORD wLen) MCONTACT hContact = HContactFromUID(dwUin, szUid, &bAdded); - cbBlob = sizeof(DWORD) * 2 + 4; + size_t nNickLen, cbBlob = sizeof(DWORD) * 2 + 4; if (dwUin) { if (getString(hContact, "Nick", &dbv)) nNickLen = 0; else { szNick = dbv.pszVal; - nNickLen = strlennull(szNick); + nNickLen = mir_strlen(szNick); } } - else nNickLen = strlennull(szUid); + else nNickLen = mir_strlen(szUid); cbBlob += nNickLen; @@ -1496,7 +1493,7 @@ void CIcqProto::handleRecvAdded(unsigned char *buf, WORD wLen) AddEvent(NULL, EVENTTYPE_ADDED, time(NULL), 0, cbBlob, pBlob); } -void CIcqProto::handleRecvAuthResponse(unsigned char *buf, WORD wLen) +void CIcqProto::handleRecvAuthResponse(unsigned char *buf, size_t wLen) { DWORD dwUin; uid_str szUid; @@ -1725,7 +1722,7 @@ void CIcqProto::icq_sendServerBeginOperation(int bImport) } icq_packet packet; - serverPacketInit(&packet, (WORD)(bImport ? 14 : 10)); + serverPacketInit(&packet, bImport ? 14 : 10); packFNACHeader(&packet, ICQ_LISTS_FAMILY, ICQ_LISTS_CLI_MODIFYSTART); if (bImport) packDWord(&packet, 1 << 0x10); diff --git a/protocols/IcqOscarJ/src/fam_15icqserver.cpp b/protocols/IcqOscarJ/src/fam_15icqserver.cpp index eb33033129..901b126891 100644 --- a/protocols/IcqOscarJ/src/fam_15icqserver.cpp +++ b/protocols/IcqOscarJ/src/fam_15icqserver.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleIcqExtensionsFam(BYTE *pBuffer, WORD wBufferLength, snac_header* pSnacHeader) +void CIcqProto::handleIcqExtensionsFam(BYTE *pBuffer, size_t wBufferLength, snac_header* pSnacHeader) { switch (pSnacHeader->wSubtype) { case ICQ_META_ERROR: @@ -43,7 +43,7 @@ void CIcqProto::handleIcqExtensionsFam(BYTE *pBuffer, WORD wBufferLength, snac_h } -void CIcqProto::handleExtensionError(BYTE *buf, WORD wPackLen) +void CIcqProto::handleExtensionError(BYTE *buf, size_t wPackLen) { WORD wErrorCode; @@ -112,7 +112,7 @@ void CIcqProto::handleExtensionError(BYTE *buf, WORD wPackLen) LogFamilyError(ICQ_EXTENSIONS_FAMILY, wErrorCode); } -void CIcqProto::handleExtensionServerInfo(BYTE *buf, WORD wPackLen, WORD wFlags) +void CIcqProto::handleExtensionServerInfo(BYTE *buf, size_t wPackLen, WORD wFlags) { // The entire packet is encapsulated in a TLV type 1 oscar_tlv_chain *chain = readIntoTLVChain(&buf, wPackLen, 0); @@ -163,7 +163,7 @@ void CIcqProto::handleExtensionServerInfo(BYTE *buf, WORD wPackLen, WORD wFlags) } -void CIcqProto::handleExtensionMetaResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wFlags) +void CIcqProto::handleExtensionMetaResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wFlags) { WORD wReplySubtype; BYTE bResultCode; @@ -298,7 +298,7 @@ void CIcqProto::ReleaseSearchCookie(DWORD dwCookie, cookie_search *pCookie) else ProtoBroadcastAck(NULL, ACKTYPE_SEARCH, ACKRESULT_SUCCESS, (HANDLE)dwCookie, 0); } -void CIcqProto::parseSearchReplies(unsigned char *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode) +void CIcqProto::parseSearchReplies(unsigned char *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode) { BYTE bParsingOK = FALSE; // For debugging purposes only BOOL bLastUser = FALSE; @@ -323,7 +323,7 @@ void CIcqProto::parseSearchReplies(unsigned char *databuf, WORD wPacketLen, WORD ICQSEARCHRESULT sr = { 0 }; DWORD dwUin; char szUin[UINMAXLEN]; - WORD wLen; + size_t wLen; sr.hdr.cbSize = sizeof(sr); @@ -446,7 +446,7 @@ void CIcqProto::parseSearchReplies(unsigned char *databuf, WORD wPacketLen, WORD } } -void CIcqProto::parseUserInfoUpdateAck(unsigned char *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode) +void CIcqProto::parseUserInfoUpdateAck(unsigned char *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode) { switch (wReplySubtype) { case META_SET_PASSWORD_ACK: // Set user password server ack @@ -562,7 +562,7 @@ int CIcqProto::parseUserInfoRecord(MCONTACT hContact, oscar_tlv *pData, UserInfo } -void CIcqProto::handleDirectoryQueryResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, WORD wFlags) +void CIcqProto::handleDirectoryQueryResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, WORD wFlags) { WORD wBytesRemaining = 0; snac_header requestSnac = { 0 }; @@ -614,7 +614,7 @@ void CIcqProto::handleDirectoryQueryResponse(BYTE *databuf, WORD wPacketLen, WOR return; } - WORD wLen; + size_t wLen; unpackWord(&databuf, &wLen); wPacketLen -= 3; if (wLen) @@ -953,22 +953,22 @@ void CIcqProto::parseDirectorySearchData(oscar_tlv_chain *cDetails, DWORD dwCook szData = cDetails->getString(0x50, 1); // Verified e-mail else szData = cDetails->getString(0x55, 1); // Pending e-mail - if (strlennull(szData)) + if (mir_strlen(szData)) isr.hdr.email = ansi_to_tchar(szData); SAFE_FREE(&szData); szData = cDetails->getString(0x64, 1); // First Name - if (strlennull(szData)) + if (mir_strlen(szData)) isr.hdr.firstName = utf8_to_tchar(szData); SAFE_FREE(&szData); szData = cDetails->getString(0x6E, 1); // Last Name - if (strlennull(szData)) + if (mir_strlen(szData)) isr.hdr.lastName = utf8_to_tchar(szData); SAFE_FREE(&szData); szData = cDetails->getString(0x78, 1); // Nick - if (strlennull(szData)) + if (mir_strlen(szData)) isr.hdr.nick = utf8_to_tchar(szData); SAFE_FREE(&szData); @@ -1013,7 +1013,7 @@ void CIcqProto::parseDirectorySearchData(oscar_tlv_chain *cDetails, DWORD dwCook } -void CIcqProto::handleDirectoryUpdateResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype) +void CIcqProto::handleDirectoryUpdateResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype) { WORD wBytesRemaining = 0; snac_header requestSnac = { 0 }; @@ -1056,7 +1056,7 @@ void CIcqProto::handleDirectoryUpdateResponse(BYTE *databuf, WORD wPacketLen, WO ReleaseCookie(wCookie); return; } - WORD wLen; + size_t wLen; unpackWord(&databuf, &wLen); wPacketLen -= 3; diff --git a/protocols/IcqOscarJ/src/fam_17signon.cpp b/protocols/IcqOscarJ/src/fam_17signon.cpp index d5251199d7..4018aa85a7 100644 --- a/protocols/IcqOscarJ/src/fam_17signon.cpp +++ b/protocols/IcqOscarJ/src/fam_17signon.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleAuthorizationFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info) +void CIcqProto::handleAuthorizationFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info) { switch (pSnacHeader->wSubtype) { @@ -70,35 +70,30 @@ static void icq_encryptPassword(const char *szPassword, BYTE *encrypted) encrypted[i] = (szPassword[i] ^ table[i % 16]); } -void CIcqProto::sendClientAuth(const char *szKey, WORD wKeyLen, BOOL bSecure) +void CIcqProto::sendClientAuth(const char *szKey, size_t wKeyLen, BOOL bSecure) { char szUin[UINMAXLEN]; - WORD wUinLen; icq_packet packet; - wUinLen = strlennull(strUID(m_dwLocalUIN, szUin)); + size_t wUinLen = mir_strlen(strUID(m_dwLocalUIN, szUin)); - packet.wLen = (m_bLegacyFix ? 65 : 70) + sizeof(CLIENT_ID_STRING) + wUinLen + wKeyLen + (m_bSecureConnection ? 4 : 0); + packet.wLen = WORD((m_bLegacyFix ? 65 : 70) + sizeof(CLIENT_ID_STRING) + wUinLen + wKeyLen + (m_bSecureConnection ? 4 : 0)); - if (bSecure) - { - serverPacketInit(&packet, (WORD)(packet.wLen + 10)); + if (bSecure) { + serverPacketInit(&packet, packet.wLen + 10); packFNACHeader(&packet, ICQ_AUTHORIZATION_FAMILY, ICQ_SIGNON_LOGIN_REQUEST, 0, 0); } - else - { + else { write_flap(&packet, ICQ_LOGIN_CHAN); packDWord(&packet, 0x00000001); } packTLV(&packet, 0x0001, wUinLen, (LPBYTE)szUin); - if (bSecure) - { // Pack MD5 auth digest + if (bSecure) { // Pack MD5 auth digest packTLV(&packet, 0x0025, wKeyLen, (BYTE*)szKey); packDWord(&packet, 0x004C0000); // empty TLV(0x4C): unknown } - else - { // Pack old style password hash + else { // Pack old style password hash BYTE hash[20]; icq_encryptPassword(szKey, hash); @@ -123,7 +118,7 @@ void CIcqProto::sendClientAuth(const char *szKey, WORD wKeyLen, BOOL bSecure) sendServPacket(&packet); } -void CIcqProto::handleAuthKeyResponse(BYTE *buf, WORD wPacketLen, serverthread_info *info) +void CIcqProto::handleAuthKeyResponse(BYTE *buf, size_t wPacketLen, serverthread_info *info) { WORD wKeyLen; char szKey[64] = {0}; @@ -152,7 +147,7 @@ void CIcqProto::handleAuthKeyResponse(BYTE *buf, WORD wPacketLen, serverthread_i unpackString(&buf, szKey, wKeyLen); mir_md5_init(&state); - mir_md5_append(&state, info->szAuthKey, info->wAuthKeyLen); + mir_md5_append(&state, info->szAuthKey, (int)info->wAuthKeyLen); mir_md5_finish(&state, digest); mir_md5_init(&state); diff --git a/protocols/IcqOscarJ/src/i18n.cpp b/protocols/IcqOscarJ/src/i18n.cpp index 102c695e09..5f2c1f4f2a 100644 --- a/protocols/IcqOscarJ/src/i18n.cpp +++ b/protocols/IcqOscarJ/src/i18n.cpp @@ -39,9 +39,9 @@ void InitI18N(void) } // Returns true if the buffer only contains 7-bit characters. -BOOL __stdcall IsUSASCII(const char *pBuffer, int nSize) +BOOL __stdcall IsUSASCII(const char *pBuffer, size_t nSize) { - for (int nIndex = 0; nIndex < nSize; nIndex++) + for (size_t nIndex = 0; nIndex < nSize; nIndex++) if (BYTE(pBuffer[nIndex]) > 0x7F) return FALSE; @@ -49,9 +49,9 @@ BOOL __stdcall IsUSASCII(const char *pBuffer, int nSize) } // Returns true if the unicode buffer only contains 7-bit characters. -BOOL __stdcall IsUnicodeAscii(const WCHAR *pBuffer, int nSize) +BOOL __stdcall IsUnicodeAscii(const WCHAR *pBuffer, size_t nSize) { - for (int nIndex = 0; nIndex < nSize; nIndex++) + for (size_t nIndex = 0; nIndex < nSize; nIndex++) if (WORD(pBuffer[nIndex]) > 0x7F) return FALSE; @@ -69,8 +69,7 @@ int __stdcall UTF8_IsValid(const char *pszInput) if (!pszInput) return 0; - for ( BYTE* c = ( BYTE*)pszInput; *c; c += (nb + 1)) - { + for (BYTE* c = (BYTE*)pszInput; *c; c += (nb + 1)) { if (!(*c & 0x80)) nb = 0; else if ((*c & 0xc0) == 0x80) return 0; @@ -81,7 +80,7 @@ int __stdcall UTF8_IsValid(const char *pszInput) else if ((*c & 0xfe) == 0xfc) nb = 5; else nb = 0; - for (int i = 1; i<=nb; i++) // we this forward, do not cross end of string + for (int i = 1; i <= nb; i++) // we this forward, do not cross end of string if ((*(c + i) & 0xc0) != 0x80) return 0; } @@ -96,13 +95,12 @@ int __stdcall get_utf8_size(const WCHAR *unicode) int index = 0; /* calculate the size of the utf-8 string */ WCHAR c = unicode[index++]; - while (c) - { - if (c < 0x0080) + while (c) { + if (c < 0x0080) size += 1; - else if (c < 0x0800) + else if (c < 0x0800) size += 2; - else + else size += 3; c = unicode[index++]; } @@ -115,7 +113,7 @@ char* __stdcall detect_decode_utf8(const char *from) { char *temp = NULL; - if (IsUSASCII(from, strlennull(from)) || !UTF8_IsValid(from) || !utf8_decode(from, &temp)) return (char*)from; + if (IsUSASCII(from, mir_strlen(from)) || !UTF8_IsValid(from) || !utf8_decode(from, &temp)) return (char*)from; SAFE_FREE((void**)&from); return temp; @@ -160,21 +158,17 @@ char* __stdcall make_utf8_string_static(const WCHAR *unicode, char *utf8, size_t unsigned short c; c = unicode[index++]; - while (c) - { - if (c < 0x080) - { + while (c) { + if (c < 0x080) { if (out_index + 1 >= utf_size) break; utf8[out_index++] = (unsigned char)c; } - else if (c < 0x800) - { + else if (c < 0x800) { if (out_index + 2 >= utf_size) break; utf8[out_index++] = 0xc0 | (c >> 6); utf8[out_index++] = 0x80 | (c & 0x3f); } - else - { + else { if (out_index + 3 >= utf_size) break; utf8[out_index++] = 0xe0 | (c >> 12); utf8[out_index++] = 0x80 | ((c >> 6) & 0x3f); @@ -207,28 +201,23 @@ WCHAR* __stdcall make_unicode_string_static(const char *utf8, WCHAR *unicode, si { unsigned int out_index = 0; - if (utf8) - { + if (utf8) { unsigned int index = 0; unsigned char c = utf8[index++]; - while (c) - { + while (c) { if (out_index + 1 >= unicode_size) break; - if ((c & 0x80) == 0) - { + if ((c & 0x80) == 0) { unicode[out_index++] = c; - } - else if ((c & 0xe0) == 0xe0) - { + } + else if ((c & 0xe0) == 0xe0) { unicode[out_index] = (c & 0x1F) << 12; c = utf8[index++]; unicode[out_index] |= (c & 0x3F) << 6; c = utf8[index++]; unicode[out_index++] |= (c & 0x3F); } - else - { + else { unicode[out_index] = (c & 0x3F) << 6; c = utf8[index++]; unicode[out_index++] |= (c & 0x3F); @@ -250,18 +239,14 @@ WCHAR* __stdcall make_unicode_string(const char *utf8) /* first calculate the size of the target string */ unsigned char c = utf8[index++]; - while (c) - { - if ((c & 0x80) == 0) - { + while (c) { + if ((c & 0x80) == 0) { index += 0; } - else if ((c & 0xe0) == 0xe0) - { + else if ((c & 0xe0) == 0xe0) { index += 2; } - else - { + else { index += 1; } size += 1; @@ -278,10 +263,9 @@ WCHAR* __stdcall make_unicode_string(const char *utf8) int __stdcall utf8_encode(const char *from, char **to) { - int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, from, strlennull(from), NULL, 0); + int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, from, (int)mir_strlen(from), NULL, 0); - if (wchars == 0) - { + if (wchars == 0) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -291,9 +275,8 @@ int __stdcall utf8_encode(const char *from, char **to) WCHAR *unicode = (WCHAR*)_alloca((wchars + 1) * sizeof(WCHAR)); ZeroMemory(unicode, (wchars + 1) * sizeof(WCHAR)); - int err = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, from, strlennull(from), unicode, wchars); - if (err != wchars) - { + int err = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, from, (int)mir_strlen(from), unicode, wchars); + if (err != wchars) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -312,8 +295,7 @@ char* __stdcall ansi_to_utf8(const char *ansi) { char *szUtf = NULL; - if (strlennull(ansi)) - { + if (mir_strlen(ansi)) { utf8_encode(ansi, &szUtf); return szUtf; } @@ -324,11 +306,11 @@ char* __stdcall ansi_to_utf8(const char *ansi) char* __stdcall ansi_to_utf8_codepage(const char *ansi, WORD wCp) { - int wchars = strlennull(ansi); + size_t wchars = mir_strlen(ansi); WCHAR *unicode = (WCHAR*)_alloca((wchars + 1) * sizeof(WCHAR)); ZeroMemory(unicode, (wchars + 1) * sizeof(WCHAR)); - MultiByteToWideChar(wCp, MB_PRECOMPOSED, ansi, wchars, unicode, wchars); + MultiByteToWideChar(wCp, MB_PRECOMPOSED, ansi, (int)wchars, unicode, (int)wchars); return make_utf8_string(unicode); } @@ -346,37 +328,31 @@ int __stdcall utf8_decode_codepage(const char *from, char **to, WORD wCp) return 0; // Use the native conversion routines when available - if (bHasCP_UTF8) - { - int inlen = strlennull(from) + 1; + if (bHasCP_UTF8) { + size_t inlen = mir_strlen(from) + 1; WCHAR *wszTemp = (WCHAR *)_alloca(inlen * sizeof(WCHAR)); - ZeroMemory(wszTemp, inlen * sizeof(WCHAR)); + ZeroMemory(wszTemp, inlen * sizeof(WCHAR)); // Convert the UTF-8 string to UCS - if (MultiByteToWideChar(CP_UTF8, 0, from, -1, wszTemp, inlen)) - { + if (MultiByteToWideChar(CP_UTF8, 0, from, -1, wszTemp, (int)inlen)) { // Convert the UCS string to local ANSI codepage *to = (char*)SAFE_MALLOC(inlen); - if (WideCharToMultiByte(wCp, 0, wszTemp, -1, *to, inlen, NULL, NULL)) - { + if (WideCharToMultiByte(wCp, 0, wszTemp, -1, *to, (int)inlen, NULL, NULL)) { nResult = 1; } - else - { + else { SAFE_FREE(to); } } } - else - { - int chars = strlennull(from) + 1; + else { + size_t chars = mir_strlen(from) + 1; WCHAR *unicode = (WCHAR*)_alloca(chars * sizeof(WCHAR)); make_unicode_string_static(from, unicode, chars); chars = WideCharToMultiByte(wCp, WC_COMPOSITECHECK, unicode, -1, NULL, 0, NULL, NULL); - if (chars == 0) - { + if (chars == 0) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -384,17 +360,15 @@ int __stdcall utf8_decode_codepage(const char *from, char **to, WORD wCp) } *to = (char*)SAFE_MALLOC((chars + 1)*sizeof(char)); - if (*to == NULL) - { + if (*to == NULL) { #ifdef _DEBUG fprintf(stderr, "Out of memory processing string to local charset\n"); #endif return 0; } - int err = WideCharToMultiByte(wCp, WC_COMPOSITECHECK, unicode, -1, *to, chars, NULL, NULL); - if (err != chars) - { + int err = WideCharToMultiByte(wCp, WC_COMPOSITECHECK, unicode, -1, *to, (int)chars, NULL, NULL); + if (err != chars) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -417,7 +391,7 @@ int __stdcall utf8_decode(const char *from, char **to) // Returns 0 on error, 1 on success -int __stdcall utf8_decode_static(const char *from, char *to, int to_size) +int __stdcall utf8_decode_static(const char *from, char *to, size_t to_size) { int nResult = 0; @@ -427,34 +401,30 @@ int __stdcall utf8_decode_static(const char *from, char *to, int to_size) if (!UTF8_IsValid(from)) return 0; - // Clear target - ZeroMemory(to, to_size); + // Clear target + ZeroMemory(to, to_size); // Use the native conversion routines when available - if (bHasCP_UTF8) - { - int inlen = strlennull(from) + 1; + if (bHasCP_UTF8) { + size_t inlen = mir_strlen(from) + 1; WCHAR *wszTemp = (WCHAR*)_alloca(inlen * sizeof(WCHAR)); ZeroMemory(wszTemp, inlen * sizeof(WCHAR)); // Convert the UTF-8 string to UCS - if (MultiByteToWideChar(CP_UTF8, 0, from, -1, wszTemp, inlen)) - { + if (MultiByteToWideChar(CP_UTF8, 0, from, -1, wszTemp, (int)inlen)) { // Convert the UCS string to local ANSI codepage - if (WideCharToMultiByte(CP_ACP, 0, wszTemp, -1, to, to_size, NULL, NULL)) - { + if (WideCharToMultiByte(CP_ACP, 0, wszTemp, -1, to, (int)to_size, NULL, NULL)) { nResult = 1; } } } - else - { - size_t chars = strlennull(from) + 1; + else { + size_t chars = mir_strlen(from) + 1; WCHAR *unicode = (WCHAR*)_alloca(chars * sizeof(WCHAR)); make_unicode_string_static(from, unicode, chars); - WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, -1, to, to_size, NULL, NULL); + WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, -1, to, (int)to_size, NULL, NULL); nResult = 1; } @@ -465,10 +435,9 @@ int __stdcall utf8_decode_static(const char *from, char *to, int to_size) WCHAR* __stdcall ansi_to_unicode(const char *ansi) { - int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ansi, strlennull(ansi), NULL, 0); + int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ansi, (int)mir_strlen(ansi), NULL, 0); - if (wchars == 0) - { + if (wchars == 0) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -477,36 +446,33 @@ WCHAR* __stdcall ansi_to_unicode(const char *ansi) WCHAR *unicode = (WCHAR*)SAFE_MALLOC((wchars + 1) * sizeof(WCHAR)); - int err = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ansi, strlennull(ansi), unicode, wchars); - if (err != wchars) - { + int err = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, ansi, (int)mir_strlen(ansi), unicode, wchars); + if (err != wchars) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif - SAFE_FREE(&unicode); + SAFE_FREE(&unicode); return NULL; } - return unicode; + return unicode; } -char* __stdcall unicode_to_ansi_static(const WCHAR *unicode, char *ansi, int ansi_size) +char* __stdcall unicode_to_ansi_static(const WCHAR *unicode, char *ansi, size_t ansi_size) { - ZeroMemory(ansi, ansi_size); + ZeroMemory(ansi, ansi_size); - if (WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, strlennull(unicode), ansi, ansi_size, NULL, NULL) > 1) + if (WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, (int)mir_wstrlen(unicode), ansi, (int)ansi_size, NULL, NULL) > 1) return ansi; - return NULL; + return NULL; } - char* __stdcall unicode_to_ansi(const WCHAR *unicode) { - int chars = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, strlennull(unicode), NULL, 0, NULL, NULL); + int chars = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, (int)mir_wstrlen(unicode), NULL, 0, NULL, NULL); - if (chars == 0) - { + if (chars == 0) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif @@ -514,17 +480,15 @@ char* __stdcall unicode_to_ansi(const WCHAR *unicode) } char* ansi = (char*)SAFE_MALLOC((chars + 1)*sizeof(char)); - if (ansi == NULL) - { + if (ansi == NULL) { #ifdef _DEBUG fprintf(stderr, "Out of memory processing string to local charset\n"); #endif return NULL; } - int err = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, strlennull(unicode), ansi, chars, NULL, NULL); - if (err != chars) - { + int err = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, unicode, (int)mir_wstrlen(unicode), ansi, chars, NULL, NULL); + if (err != chars) { #ifdef _DEBUG fprintf(stderr, "Unicode translation error %d\n", GetLastError()); #endif diff --git a/protocols/IcqOscarJ/src/i18n.h b/protocols/IcqOscarJ/src/i18n.h index e00719718d..923609c8a2 100644 --- a/protocols/IcqOscarJ/src/i18n.h +++ b/protocols/IcqOscarJ/src/i18n.h @@ -30,8 +30,8 @@ #ifndef __I18N_H #define __I18N_H -BOOL __stdcall IsUSASCII(const char *pBuffer, int nSize); -BOOL __stdcall IsUnicodeAscii(const WCHAR *pBuffer, int nSize); +BOOL __stdcall IsUSASCII(const char *pBuffer, size_t nSize); +BOOL __stdcall IsUnicodeAscii(const WCHAR *pBuffer, size_t nSize); int __stdcall UTF8_IsValid(const char *pszInput); int __stdcall get_utf8_size(const WCHAR *unicode); @@ -49,12 +49,12 @@ char* __stdcall ansi_to_utf8_codepage(const char *ansi, WORD wCp); WCHAR* __stdcall ansi_to_unicode(const char *ansi); char* __stdcall unicode_to_ansi(const WCHAR *unicode); -char* __stdcall unicode_to_ansi_static(const WCHAR *unicode, char *ansi, int ansi_size); +char* __stdcall unicode_to_ansi_static(const WCHAR *unicode, char *ansi, size_t ansi_size); int __stdcall utf8_encode(const char *from, char **to); int __stdcall utf8_decode(const char *from, char **to); int __stdcall utf8_decode_codepage(const char *from, char **to, WORD wCp); -int __stdcall utf8_decode_static(const char *from, char *to, int to_size); +int __stdcall utf8_decode_static(const char *from, char *to, size_t to_size); #define tchar_to_utf8 make_utf8_string #define utf8_to_tchar_static make_unicode_string_static diff --git a/protocols/IcqOscarJ/src/icq_advsearch.cpp b/protocols/IcqOscarJ/src/icq_advsearch.cpp index e7e60fc58b..510c1bc03b 100644 --- a/protocols/IcqOscarJ/src/icq_advsearch.cpp +++ b/protocols/IcqOscarJ/src/icq_advsearch.cpp @@ -68,7 +68,7 @@ static DWORD getCurItemData(HWND hwndDlg, UINT iCtrl) return SendDlgItemMessage(hwndDlg, iCtrl, CB_GETITEMDATA, SendDlgItemMessage(hwndDlg, iCtrl, CB_GETCURSEL, 0, 0), 0); } -static void searchPackTLVLNTS(PBYTE *buf, int *buflen, HWND hwndDlg, UINT idControl, WORD wType) +static void searchPackTLVLNTS(PBYTE *buf, size_t *buflen, HWND hwndDlg, UINT idControl, WORD wType) { char str[512]; @@ -77,7 +77,7 @@ static void searchPackTLVLNTS(PBYTE *buf, int *buflen, HWND hwndDlg, UINT idCont ppackLETLVLNTS(buf, buflen, str, wType, 0); } -static void searchPackTLVWordLNTS(PBYTE *buf, int *buflen, HWND hwndDlg, UINT idControl, WORD w, WORD wType) +static void searchPackTLVWordLNTS(PBYTE *buf, size_t *buflen, HWND hwndDlg, UINT idControl, WORD w, WORD wType) { char str[512]; @@ -86,10 +86,10 @@ static void searchPackTLVWordLNTS(PBYTE *buf, int *buflen, HWND hwndDlg, UINT id ppackLETLVWordLNTS(buf, buflen, w, str, wType, 0); } -static PBYTE createAdvancedSearchStructureTLV(HWND hwndDlg, int *length) +static PBYTE createAdvancedSearchStructureTLV(HWND hwndDlg, size_t *length) { PBYTE buf = NULL; - int buflen = 0; + size_t buflen = 0; ppackLEWord(&buf, &buflen, META_SEARCH_GENERIC); /* subtype: full search */ @@ -140,7 +140,7 @@ static PBYTE createAdvancedSearchStructureTLV(HWND hwndDlg, int *length) return buf; } -PBYTE createAdvancedSearchStructure(HWND hwndDlg, int *length) +PBYTE createAdvancedSearchStructure(HWND hwndDlg, size_t *length) { if (!hwndDlg) return NULL; diff --git a/protocols/IcqOscarJ/src/icq_advsearch.h b/protocols/IcqOscarJ/src/icq_advsearch.h index e82625aa65..063dbf28dc 100644 --- a/protocols/IcqOscarJ/src/icq_advsearch.h +++ b/protocols/IcqOscarJ/src/icq_advsearch.h @@ -22,5 +22,5 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // ----------------------------------------------------------------------------- -INT_PTR CALLBACK AdvancedSearchDlgProc(HWND hwndDlg,UINT message,WPARAM wParam,LPARAM lParam); -PBYTE createAdvancedSearchStructure(HWND hwndDlg,int *length); +INT_PTR CALLBACK AdvancedSearchDlgProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam); +PBYTE createAdvancedSearchStructure(HWND hwndDlg, size_t *length); diff --git a/protocols/IcqOscarJ/src/icq_avatar.cpp b/protocols/IcqOscarJ/src/icq_avatar.cpp index 6a9f733296..7d2a5573bf 100644 --- a/protocols/IcqOscarJ/src/icq_avatar.cpp +++ b/protocols/IcqOscarJ/src/icq_avatar.cpp @@ -104,7 +104,7 @@ void CIcqProto::GetAvatarFileName(int dwUin, const char *szUid, TCHAR *pszDest, // fill the destination lstrcpyn(pszDest, szPath, cbLen - 1); - int tPathLen = strlennull(pszDest); + size_t tPathLen = mir_tstrlen(pszDest); // make sure the avatar cache directory exists CreateDirectoryTreeT(szPath); @@ -188,7 +188,7 @@ int CIcqProto::IsAvatarChanged(MCONTACT hContact, const BYTE *pHash, int nHashLe return ret; } -void CIcqProto::StartAvatarThread(HANDLE hConn, char *cookie, WORD cookieLen) // called from event +void CIcqProto::StartAvatarThread(HANDLE hConn, char *cookie, size_t cookieLen) // called from event { if (!hConn) { icq_lock l(m_avatarsMutex); // place avatars lock @@ -734,7 +734,7 @@ void __cdecl CIcqProto::AvatarThread(avatars_server_connection *pInfo) debugLogA("%s thread ended.", "Avatar"); } -avatars_server_connection::avatars_server_connection(CIcqProto *_ppro, HANDLE _hConnection, char *_pCookie, WORD _wCookieLen) : +avatars_server_connection::avatars_server_connection(CIcqProto *_ppro, HANDLE _hConnection, char *_pCookie, size_t _wCookieLen) : isLoggedIn(false), stopThread(false), isActive(false), ppro(_ppro), pCookie(_pCookie), @@ -777,7 +777,7 @@ void avatars_server_connection::shutdownConnection() Netlib_Shutdown(hConnection); } -DWORD avatars_server_connection::sendGetAvatarRequest(MCONTACT hContact, DWORD dwUin, char *szUid, const BYTE *hash, unsigned int hashlen, const TCHAR *file) +DWORD avatars_server_connection::sendGetAvatarRequest(MCONTACT hContact, DWORD dwUin, char *szUid, const BYTE *hash, size_t hashlen, const TCHAR *file) { int i; DWORD dwNow = GetTickCount(); @@ -837,11 +837,11 @@ DWORD avatars_server_connection::sendGetAvatarRequest(MCONTACT hContact, DWORD d DWORD dwCookie = ppro->AllocateCookie(CKT_AVATAR, ICQ_AVATAR_GET_REQUEST, hContact, ack); icq_packet packet; - serverPacketInit(&packet, (WORD)(12 + nUinLen + hashlen)); + serverPacketInit(&packet, 12 + nUinLen + hashlen); packFNACHeader(&packet, ICQ_AVATAR_FAMILY, ICQ_AVATAR_GET_REQUEST, 0, dwCookie); packUID(&packet, dwUin, szUid); packByte(&packet, 1); // unknown, probably type of request: 1 = get icon :) - packBuffer(&packet, hash, (WORD)hashlen); + packBuffer(&packet, hash, hashlen); if (sendServerPacket(&packet)) { ppro->debugLogA("Request to get %s image sent.", strUID(dwUin, szUid)); @@ -859,7 +859,7 @@ DWORD avatars_server_connection::sendGetAvatarRequest(MCONTACT hContact, DWORD d return 0; // Failure } -DWORD avatars_server_connection::sendUploadAvatarRequest(MCONTACT hContact, WORD wRef, const BYTE *data, unsigned int datalen) +DWORD avatars_server_connection::sendUploadAvatarRequest(MCONTACT hContact, WORD wRef, const BYTE *data, size_t datalen) { cookie_avatar *ack = (cookie_avatar*)SAFE_MALLOC(sizeof(cookie_avatar)); if (!ack) @@ -870,11 +870,11 @@ DWORD avatars_server_connection::sendUploadAvatarRequest(MCONTACT hContact, WORD DWORD dwCookie = ppro->AllocateCookie(CKT_AVATAR, ICQ_AVATAR_UPLOAD_REQUEST, 0, ack); icq_packet packet; - serverPacketInit(&packet, (WORD)(14 + datalen)); + serverPacketInit(&packet, 14 + datalen); packFNACHeader(&packet, ICQ_AVATAR_FAMILY, ICQ_AVATAR_UPLOAD_REQUEST, 0, dwCookie); packWord(&packet, wRef); // unknown, probably reference packWord(&packet, (WORD)datalen); - packBuffer(&packet, data, (WORD)datalen); + packBuffer(&packet, data, datalen); if (sendServerPacket(&packet)) { ppro->debugLogA("Upload image packet sent."); @@ -1020,7 +1020,7 @@ int avatars_server_connection::sendServerPacket(icq_packet *pPacket) int nSendResult; for (int nRetries = 3; nRetries >= 0; nRetries--) { - nSendResult = Netlib_Send(hConnection, (const char *)pPacket->pData, pPacket->wLen, 0); + nSendResult = Netlib_Send(hConnection, (const char*)pPacket->pData, (int)pPacket->wLen, 0); if (nSendResult != SOCKET_ERROR) break; @@ -1047,7 +1047,7 @@ int avatars_server_connection::sendServerPacket(icq_packet *pPacket) return lResult; } -int avatars_server_connection::handleServerPackets(BYTE *buf, int buflen) +int avatars_server_connection::handleServerPackets(BYTE *buf, size_t buflen) { BYTE channel; WORD sequence; @@ -1094,7 +1094,7 @@ int avatars_server_connection::handleServerPackets(BYTE *buf, int buflen) return bytesUsed; } -void avatars_server_connection::handleLoginChannel(BYTE *buf, WORD datalen) +void avatars_server_connection::handleLoginChannel(BYTE *buf, size_t datalen) { if (*(DWORD*)buf == 0x1000000) { // here check if we received SRV_HELLO wLocalSequence = generate_flap_sequence(); @@ -1111,7 +1111,7 @@ void avatars_server_connection::handleLoginChannel(BYTE *buf, WORD datalen) else ppro->debugLogA("Invalid Server response, Channel 1."); } -void avatars_server_connection::handleDataChannel(BYTE *buf, WORD datalen) +void avatars_server_connection::handleDataChannel(BYTE *buf, size_t datalen) { snac_header snacHeader = {0}; if (!unpackSnacHeader(&snacHeader, &buf, &datalen) || !snacHeader.bValid) @@ -1138,7 +1138,7 @@ void avatars_server_connection::handleDataChannel(BYTE *buf, WORD datalen) } } -void avatars_server_connection::handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader) +void avatars_server_connection::handleServiceFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader) { icq_packet packet; @@ -1199,7 +1199,7 @@ void avatars_server_connection::handleServiceFam(BYTE *pBuffer, WORD wBufferLeng } } -void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader) +void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader) { cookie_avatar *pCookieData; @@ -1230,7 +1230,6 @@ void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLengt ppro->FreeCookie(pSnacHeader->dwRef); BYTE len; - WORD datalen; unpackByte(&pBuffer, &len); if (wBufferLength < ((pCookieData->hashlen) << 1) + 4 + len) { @@ -1248,6 +1247,8 @@ void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLengt pBuffer += pCookieData->hashlen; unpackByte(&pBuffer, &bResult); pBuffer += pCookieData->hashlen; + + size_t datalen; unpackWord(&pBuffer, &datalen); wBufferLength -= 4 + len + (pCookieData->hashlen << 1); @@ -1264,7 +1265,7 @@ void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLengt BYTE digest[16]; mir_md5_init(&state); - mir_md5_append(&state, (const BYTE *)pBuffer, datalen); + mir_md5_append(&state, (const BYTE *)pBuffer, (int)datalen); mir_md5_finish(&state, digest); // check if received data corresponds to specified hash if (memcmp(pCookieData->hash + 4, digest, 0x10)) aValid = 0; @@ -1284,7 +1285,7 @@ void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLengt int out = _topen(tszImageFile, _O_BINARY | _O_CREAT | _O_TRUNC | _O_WRONLY, _S_IREAD | _S_IWRITE); if (out != -1) { - _write(out, pBuffer, datalen); + _write(out, pBuffer, (int)datalen); _close(out); if (!pCookieData->hContact) { // our avatar, set filename @@ -1303,8 +1304,8 @@ void avatars_server_connection::handleAvatarFam(BYTE *pBuffer, WORD wBufferLengt else { ppro->debugLogA("Warning: DB error (no hash in DB)."); // the hash was lost, try to fix that - if (ppro->setSettingBlob(pCookieData->hContact, "AvatarSaved", pCookieData->hash, pCookieData->hashlen) || - ppro->setSettingBlob(pCookieData->hContact, "AvatarHash", pCookieData->hash, pCookieData->hashlen)) + if (ppro->setSettingBlob(pCookieData->hContact, "AvatarSaved", pCookieData->hash, (int)pCookieData->hashlen) || + ppro->setSettingBlob(pCookieData->hContact, "AvatarHash", pCookieData->hash, (int)pCookieData->hashlen)) { ppro->debugLogA("Failed to save avatar hash to DB"); } diff --git a/protocols/IcqOscarJ/src/icq_avatar.h b/protocols/IcqOscarJ/src/icq_avatar.h index b67230fb0d..f776b0f3b9 100644 --- a/protocols/IcqOscarJ/src/icq_avatar.h +++ b/protocols/IcqOscarJ/src/icq_avatar.h @@ -1,23 +1,23 @@ // ---------------------------------------------------------------------------80 // ICQ plugin for Miranda Instant Messenger // ________________________________________ -// +// // Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede // Copyright © 2001-2002 Jon Keating, Richard Hughes // Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater // Copyright © 2004-2010 Joe Kucera // Copyright © 2012-2014 Miranda NG Team -// +// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. @@ -53,17 +53,17 @@ protected: BOOL stopThread; // horrible, but simple - signal for thread to stop char *pCookie; // auth to server - WORD wCookieLen; + size_t wCookieLen; int sendServerPacket(icq_packet *pPacket); - int handleServerPackets(BYTE *buf, int buflen); + int handleServerPackets(BYTE *buf, size_t buflen); - void handleLoginChannel(BYTE *buf, WORD datalen); - void handleDataChannel(BYTE *buf, WORD datalen); + void handleLoginChannel(BYTE *buf, size_t datalen); + void handleDataChannel(BYTE *buf, size_t datalen); - void handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); - void handleAvatarFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); + void handleServiceFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader); + void handleAvatarFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader); rates *m_rates; icq_critical_section *m_ratesMutex; @@ -74,7 +74,7 @@ protected: void checkRequestQueue(); public: - avatars_server_connection(CIcqProto *ppro, HANDLE hConnection, char *pCookie, WORD wCookieLen); + avatars_server_connection(CIcqProto *ppro, HANDLE hConnection, char *pCookie, size_t wCookieLen); virtual ~avatars_server_connection(); void connectionThread(); @@ -84,25 +84,25 @@ public: __inline BOOL isPending() { return !isLoggedIn; }; __inline BOOL isReady() { return isLoggedIn && isActive && !stopThread; }; - DWORD sendGetAvatarRequest(MCONTACT hContact, DWORD dwUin, char *szUid, const BYTE *hash, unsigned int hashlen, const TCHAR *file); - DWORD sendUploadAvatarRequest(MCONTACT hContact, WORD wRef, const BYTE *data, unsigned int datalen); + DWORD sendGetAvatarRequest(MCONTACT hContact, DWORD dwUin, char *szUid, const BYTE *hash, size_t hashlen, const TCHAR *file); + DWORD sendUploadAvatarRequest(MCONTACT hContact, WORD wRef, const BYTE *data, size_t datalen); }; __inline static void SAFE_DELETE(avatars_server_connection **p) { SAFE_DELETE((lockable_struct**)p); }; struct avatars_request : public MZeroedObject { - int type; + int type; MCONTACT hContact; - DWORD dwUin; - uid_str szUid; - BYTE *hash; - unsigned int hashlen; - TCHAR *szFile; - BYTE *pData; - unsigned int cbData; - WORD wRef; - DWORD timeOut; + DWORD dwUin; + uid_str szUid; + BYTE *hash; + size_t hashlen; + TCHAR *szFile; + BYTE *pData; + size_t cbData; + WORD wRef; + DWORD timeOut; avatars_request *pNext; public: diff --git a/protocols/IcqOscarJ/src/icq_clients.cpp b/protocols/IcqOscarJ/src/icq_clients.cpp index 6b0a046c91..e70066b9ca 100644 --- a/protocols/IcqOscarJ/src/icq_clients.cpp +++ b/protocols/IcqOscarJ/src/icq_clients.cpp @@ -188,7 +188,7 @@ const char* cliSpamBot = "Spam Bot"; const char* CIcqProto::detectUserClient(MCONTACT hContact, int nIsICQ, WORD wUserClass, DWORD dwOnlineSince, const char *szCurrentClient, WORD wVersion, DWORD dwFT1, DWORD dwFT2, DWORD dwFT3, BYTE bDirectFlag, DWORD dwDirectCookie, DWORD dwWebPort, /* ICQ specific */ - BYTE *caps, WORD wLen, /* Client capabilities */ + BYTE *caps, size_t wLen, /* Client capabilities */ BYTE *bClientId, /* Output: detected client-type */ char *szClientBuf) { diff --git a/protocols/IcqOscarJ/src/icq_db.cpp b/protocols/IcqOscarJ/src/icq_db.cpp index 35fabbe38c..e121b6d0d8 100644 --- a/protocols/IcqOscarJ/src/icq_db.cpp +++ b/protocols/IcqOscarJ/src/icq_db.cpp @@ -189,14 +189,14 @@ int CIcqProto::IsICQContact(MCONTACT hContact) return !strcmpnull(szProto, m_szModuleName); } -HANDLE CIcqProto::AddEvent(MCONTACT hContact, WORD wType, DWORD dwTime, DWORD flags, DWORD cbBlob, PBYTE pBlob) +HANDLE CIcqProto::AddEvent(MCONTACT hContact, WORD wType, DWORD dwTime, DWORD flags, size_t cbBlob, PBYTE pBlob) { DBEVENTINFO dbei = { sizeof(dbei) }; dbei.szModule = m_szModuleName; dbei.timestamp = dwTime; dbei.flags = flags; dbei.eventType = wType; - dbei.cbBlob = cbBlob; + dbei.cbBlob = (DWORD)cbBlob; dbei.pBlob = pBlob; return db_event_add(hContact, &dbei); } diff --git a/protocols/IcqOscarJ/src/icq_direct.cpp b/protocols/IcqOscarJ/src/icq_direct.cpp index 391ccf16dd..f1834c6776 100644 --- a/protocols/IcqOscarJ/src/icq_direct.cpp +++ b/protocols/IcqOscarJ/src/icq_direct.cpp @@ -196,7 +196,7 @@ void __cdecl CIcqProto::icq_directThread(directthreadstartinfo *dtsi) NETLIBPACKETRECVER packetRecv = { 0 }; HANDLE hPacketRecver; BOOL bFirstPacket = TRUE; - int nSkipPacketBytes = 0; + size_t nSkipPacketBytes = 0; DWORD dwReqMsgID1; DWORD dwReqMsgID2; @@ -377,10 +377,9 @@ void __cdecl CIcqProto::icq_directThread(directthreadstartinfo *dtsi) packetRecv.bytesUsed = packetRecv.bytesAvailable; } else { - int i; - + size_t i; for (i = nSkipPacketBytes, nSkipPacketBytes = 0; i + 2 <= packetRecv.bytesAvailable;) { - WORD wLen = *(WORD*)(packetRecv.buffer + i); + size_t wLen = *(WORD*)(packetRecv.buffer + i); if (bFirstPacket) { if (wLen > 64) { // roughly check first packet size @@ -394,7 +393,7 @@ void __cdecl CIcqProto::icq_directThread(directthreadstartinfo *dtsi) if (packetRecv.bytesAvailable >= i + 2 && wLen > 8190) { // check for too big packages NetLog_Direct("Error: Package too big: %d bytes, skipping."); nSkipPacketBytes = wLen; - packetRecv.bytesUsed = i + 2; + packetRecv.bytesUsed = int(i + 2); break; } } @@ -403,7 +402,7 @@ void __cdecl CIcqProto::icq_directThread(directthreadstartinfo *dtsi) break; if (dc.type == DIRECTCONN_STANDARD && wLen && packetRecv.buffer[i + 2] == 2) { - if (!DecryptDirectPacket(&dc, packetRecv.buffer + i + 3, (WORD)(wLen - 1))) { + if (!DecryptDirectPacket(&dc, packetRecv.buffer + i + 3, wLen - 1)) { NetLog_Direct("Error: Corrupted packet encryption, ignoring packet"); i += wLen + 2; continue; @@ -417,7 +416,7 @@ void __cdecl CIcqProto::icq_directThread(directthreadstartinfo *dtsi) i += wLen + 2; } - packetRecv.bytesUsed = i; + packetRecv.bytesUsed = (int)i; } } @@ -443,7 +442,7 @@ LBL_Exit: directConns.remove(&dc); } -void CIcqProto::handleDirectPacket(directconnect* dc, PBYTE buf, WORD wLen) +void CIcqProto::handleDirectPacket(directconnect* dc, PBYTE buf, size_t wLen) { if (wLen < 1) return; @@ -633,7 +632,7 @@ void CIcqProto::handleDirectPacket(directconnect* dc, PBYTE buf, WORD wLen) NetLog_Direct("Received PEER_MSG from %u", dc->dwRemoteUin); if (dc->initialised) - handleDirectMessage(dc, buf + 1, (WORD)(wLen - 1)); + handleDirectMessage(dc, buf+1, wLen-1); else NetLog_Direct("Received %s on uninitialised DC, ignoring.", "PEER_MSG"); @@ -758,7 +757,7 @@ void EncryptDirectPacket(directconnect* dc, icq_packet* p) *(PDWORD)(buf + offset) = check; } -int DecryptDirectPacket(directconnect* dc, PBYTE buf, WORD wLen) +int DecryptDirectPacket(directconnect* dc, PBYTE buf, size_t wLen) { unsigned long hex; unsigned long B1; @@ -768,7 +767,7 @@ int DecryptDirectPacket(directconnect* dc, PBYTE buf, WORD wLen) unsigned char X2; unsigned char X3; unsigned char bak[6]; - unsigned long size = wLen; + unsigned long size = (unsigned long)wLen; if (dc->wVersion < 4) return 1; // no decryption necessary. @@ -944,28 +943,21 @@ void CIcqProto::sendPeerMsgInit(directconnect* dc, DWORD dwSeq) void CIcqProto::sendPeerFileInit(directconnect* dc) { - DBVARIANT dbv; - char* szNick; - - dbv.type = DBVT_DELETED; - if (getString("Nick", &dbv)) - szNick = ""; - else - szNick = dbv.pszVal; - int nNickLen = strlennull(szNick); + ptrA tmp(getStringA("Nick")); + char *szNick = NEWSTR_ALLOCA((tmp == NULL) ? "" : tmp); + size_t nNickLen = mir_strlen(szNick); icq_packet packet; - directPacketInit(&packet, (WORD)(20 + nNickLen)); + directPacketInit(&packet, 20 + nNickLen); packByte(&packet, PEER_FILE_INIT); /* packet type */ packLEDWord(&packet, 0); /* unknown */ packLEDWord(&packet, dc->ft->dwFileCount); packLEDWord(&packet, dc->ft->dwTotalSize); packLEDWord(&packet, dc->ft->dwTransferSpeed); - packLEWord(&packet, (WORD)(nNickLen + 1)); - packBuffer(&packet, (LPBYTE)szNick, (WORD)(nNickLen + 1)); + packLEWord(&packet, WORD(nNickLen + 1)); + packBuffer(&packet, (LPBYTE)szNick, nNickLen + 1); sendDirectPacket(dc, &packet); - db_free(&dbv); NetLog_Direct("Sent PEER_FILE_INIT to %u on %s DC", dc->dwRemoteUin, dc->incoming ? "incoming" : "outgoing"); } diff --git a/protocols/IcqOscarJ/src/icq_direct.h b/protocols/IcqOscarJ/src/icq_direct.h index 370bde19f3..7a412ced11 100644 --- a/protocols/IcqOscarJ/src/icq_direct.h +++ b/protocols/IcqOscarJ/src/icq_direct.h @@ -85,6 +85,6 @@ struct directconnect DWORD dwReqId; // Reverse Connect request cookie }; -int DecryptDirectPacket(directconnect* dc, PBYTE buf, WORD wLen); +int DecryptDirectPacket(directconnect* dc, PBYTE buf, size_t wLen); #endif /* __ICQ_DIRECT_H */ diff --git a/protocols/IcqOscarJ/src/icq_directmsg.cpp b/protocols/IcqOscarJ/src/icq_directmsg.cpp index 8010f31870..26206cf6d3 100644 --- a/protocols/IcqOscarJ/src/icq_directmsg.cpp +++ b/protocols/IcqOscarJ/src/icq_directmsg.cpp @@ -25,7 +25,7 @@ #include "icqoscar.h" -void CIcqProto::handleDirectMessage(directconnect* dc, PBYTE buf, WORD wLen) +void CIcqProto::handleDirectMessage(directconnect* dc, PBYTE buf, size_t wLen) { WORD wCommand; WORD wCookie; @@ -198,20 +198,17 @@ void CIcqProto::handleDirectMessage(directconnect* dc, PBYTE buf, WORD wLen) NetLog_Direct("Unknown wCommand, packet skipped"); } -void CIcqProto::handleDirectGreetingMessage(directconnect* dc, PBYTE buf, WORD wLen, WORD wCommand, WORD wCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wStatus, WORD wFlags, char* pszText) +void CIcqProto::handleDirectGreetingMessage(directconnect* dc, PBYTE buf, size_t wLen, WORD wCommand, WORD wCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wStatus, WORD wFlags, char* pszText) { - DWORD dwLengthToEnd; - DWORD dwDataLength; - char* pszFileName = NULL; - int typeId; - WORD qt; - NetLog_Direct("Handling PEER_MSG_GREETING, command %u, cookie %u, messagetype %u, messageflags %u, status %u, flags %u", wCommand, wCookie, bMsgType, bMsgFlags, wStatus, wFlags); + int typeId; + WORD qt; if (!unpackPluginTypeId(&buf, &wLen, &typeId, &qt, TRUE)) return; // Length of remaining data + size_t dwLengthToEnd; unpackLEDWord(&buf, &dwLengthToEnd); if (dwLengthToEnd < 4 || dwLengthToEnd > wLen) { NetLog_Direct("Error: Sanity checking failed (%d) in handleDirectGreetingMessage, datalen %u wLen %u", 2, dwLengthToEnd, wLen); @@ -219,6 +216,7 @@ void CIcqProto::handleDirectGreetingMessage(directconnect* dc, PBYTE buf, WORD w } // Length of message/reason + size_t dwDataLength; unpackLEDWord(&buf, &dwDataLength); wLen -= 4; if (dwDataLength > wLen) { @@ -229,18 +227,18 @@ void CIcqProto::handleDirectGreetingMessage(directconnect* dc, PBYTE buf, WORD w if (typeId == MTYPE_FILEREQ && wCommand == DIRECT_MESSAGE) { NetLog_Direct("This is file request"); char *szMsg = (char*)_alloca(dwDataLength + 1); - unpackString(&buf, szMsg, (WORD)dwDataLength); + unpackString(&buf, szMsg, dwDataLength); szMsg[dwDataLength] = '\0'; - wLen = wLen - (WORD)dwDataLength; + wLen -= dwDataLength; handleFileRequest(buf, wLen, dc->dwRemoteUin, wCookie, 0, 0, szMsg, 8, TRUE); } else if (typeId == MTYPE_FILEREQ && wCommand == DIRECT_ACK) { NetLog_Direct("This is file ack"); char *szMsg = (char*)_alloca(dwDataLength + 1); - unpackString(&buf, szMsg, (WORD)dwDataLength); + unpackString(&buf, szMsg, dwDataLength); szMsg[dwDataLength] = '\0'; - wLen = wLen - (WORD)dwDataLength; + wLen -= dwDataLength; // 50 - file request granted/refused handleFileAck(buf, wLen, dc->dwRemoteUin, wCookie, wStatus, szMsg); @@ -253,17 +251,17 @@ void CIcqProto::handleDirectGreetingMessage(directconnect* dc, PBYTE buf, WORD w pMsgAck.pDC = dc; pMsgAck.wCookie = wCookie; pMsgAck.msgType = typeId; - handleMessageTypes(dc->dwRemoteUin, szUID, time(NULL), 0, 0, wCookie, dc->wVersion, typeId, 0, 0, dwLengthToEnd, (WORD)dwDataLength, (char*)buf, MTF_PLUGIN | MTF_DIRECT, &pMsgAck); + handleMessageTypes(dc->dwRemoteUin, szUID, time(NULL), 0, 0, wCookie, dc->wVersion, typeId, 0, 0, dwLengthToEnd, dwDataLength, (char*)buf, MTF_PLUGIN | MTF_DIRECT, &pMsgAck); } else if (typeId == MTYPE_STATUSMSGEXT && wCommand == DIRECT_ACK) { // especially for icq2003b NetLog_Direct("This is extended status reply"); char *szMsg = (char*)_alloca(dwDataLength + 1); - uid_str szUID; - unpackString(&buf, szMsg, (WORD)dwDataLength); + unpackString(&buf, szMsg, dwDataLength); szMsg[dwDataLength] = '\0'; - handleMessageTypes(dc->dwRemoteUin, szUID, time(NULL), 0, 0, wCookie, dc->wVersion, (int)(qt + 0xE7), 3, 2, (DWORD)wLen, (WORD)dwDataLength, szMsg, MTF_PLUGIN | MTF_DIRECT, NULL); + uid_str szUID; + handleMessageTypes(dc->dwRemoteUin, szUID, time(NULL), 0, 0, wCookie, dc->wVersion, (int)(qt + 0xE7), 3, 2, wLen, dwDataLength, szMsg, MTF_PLUGIN | MTF_DIRECT, NULL); } else if (typeId && wCommand == DIRECT_ACK) { MCONTACT hCookieContact; diff --git a/protocols/IcqOscarJ/src/icq_filerequests.cpp b/protocols/IcqOscarJ/src/icq_filerequests.cpp index afb4d94bcc..86b48eeb27 100644 --- a/protocols/IcqOscarJ/src/icq_filerequests.cpp +++ b/protocols/IcqOscarJ/src/icq_filerequests.cpp @@ -25,13 +25,12 @@ #include "icqoscar.h" -void CIcqProto::handleFileAck(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCookie, WORD wStatus, char* pszText) +void CIcqProto::handleFileAck(PBYTE buf, size_t wLen, DWORD dwUin, DWORD dwCookie, WORD wStatus, char* pszText) { char* pszFileName = NULL; DWORD dwFileSize; MCONTACT hCookieContact; WORD wPort; - WORD wFilenameLength; filetransfer* ft; // Find the filetransfer that belongs to this response @@ -72,6 +71,7 @@ void CIcqProto::handleFileAck(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCookie, wLen -= 2; // Filename + size_t wFilenameLength; unpackLEWord(&buf, &wFilenameLength); if (wFilenameLength > 0) { if (wFilenameLength > wLen - 2) @@ -111,10 +111,10 @@ filetransfer* CIcqProto::CreateFileTransfer(MCONTACT hContact, DWORD dwUin, int // pszDescription points to a string with the reason // buf points to the first data after the string -void CIcqProto::handleFileRequest(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCookie, DWORD dwID1, DWORD dwID2, char* pszDescription, int nVersion, BOOL bDC) +void CIcqProto::handleFileRequest(PBYTE buf, size_t wLen, DWORD dwUin, DWORD dwCookie, DWORD dwID1, DWORD dwID2, char* pszDescription, int nVersion, BOOL bDC) { BOOL bEmptyDesc = FALSE; - if (strlennull(pszDescription) == 0) { + if (mir_strlen(pszDescription) == 0) { pszDescription = Translate("No description given"); bEmptyDesc = TRUE; } @@ -173,7 +173,7 @@ void CIcqProto::handleFileRequest(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCoo mir_free(ptszFileName); } -void CIcqProto::handleDirectCancel(directconnect *dc, PBYTE buf, WORD wLen, WORD wCommand, DWORD dwCookie, WORD wMessageType, WORD wStatus, WORD wFlags, char* pszText) +void CIcqProto::handleDirectCancel(directconnect *dc, PBYTE buf, size_t wLen, WORD wCommand, DWORD dwCookie, WORD wMessageType, WORD wStatus, WORD wFlags, char* pszText) { NetLog_Direct("handleDirectCancel: Unhandled cancel"); } diff --git a/protocols/IcqOscarJ/src/icq_filetransfer.cpp b/protocols/IcqOscarJ/src/icq_filetransfer.cpp index b1cc948705..df3ffa8c20 100644 --- a/protocols/IcqOscarJ/src/icq_filetransfer.cpp +++ b/protocols/IcqOscarJ/src/icq_filetransfer.cpp @@ -50,7 +50,6 @@ static void file_buildProtoFileTransferStatus(filetransfer* ft, PROTOFILETRANSFE static void file_sendTransferSpeed(CIcqProto* ppro, directconnect* dc) { icq_packet packet; - directPacketInit(&packet, 5); packByte(&packet, PEER_FILE_SPEED); /* Ident */ packLEDWord(&packet, dc->ft->dwTransferSpeed); @@ -60,31 +59,22 @@ static void file_sendTransferSpeed(CIcqProto* ppro, directconnect* dc) static void file_sendNick(CIcqProto* ppro, directconnect* dc) { - icq_packet packet; - char* szNick; - WORD wNickLen; - DBVARIANT dbv = { DBVT_DELETED }; - - if (ppro->getString("Nick", &dbv)) - szNick = ""; - else - szNick = dbv.pszVal; + ptrA tmp(ppro->getStringA("Nick")); + char *szNick = NEWSTR_ALLOCA((tmp == NULL) ? "" : tmp); + size_t nNickLen = mir_strlen(szNick); - wNickLen = strlennull(szNick); - - directPacketInit(&packet, (WORD)(8 + wNickLen)); + icq_packet packet; + directPacketInit(&packet, 8 + nNickLen); packByte(&packet, PEER_FILE_INIT_ACK); /* Ident */ packLEDWord(&packet, dc->ft->dwTransferSpeed); - packLEWord(&packet, (WORD)(wNickLen + 1)); - packBuffer(&packet, (LPBYTE)szNick, (WORD)(wNickLen + 1)); + packLEWord(&packet, WORD(nNickLen + 1)); + packBuffer(&packet, (LPBYTE)szNick, nNickLen + 1); ppro->sendDirectPacket(dc, &packet); - db_free(&dbv); } static void file_sendNextFile(CIcqProto* ppro, directconnect* dc) { - icq_packet packet; struct _stati64 statbuf; char szThisSubDir[MAX_PATH]; @@ -105,9 +95,8 @@ static void file_sendNextFile(CIcqProto* ppro, directconnect* dc) char *pszThisFileName = FindFilePathContainer((LPCSTR*)dc->ft->pszFiles, dc->ft->iCurrentFile, szThisSubDir); - if (statbuf.st_mode&_S_IFDIR) { + if (statbuf.st_mode & _S_IFDIR) dc->ft->currentIsDir = 1; - } else { dc->ft->currentIsDir = 0; dc->ft->fileId = OpenFileUtf(dc->ft->szThisFile, _O_BINARY | _O_RDONLY, _S_IREAD); @@ -117,8 +106,8 @@ static void file_sendNextFile(CIcqProto* ppro, directconnect* dc) dc->ft->hConnection = NULL; return; } - } + dc->ft->dwThisFileSize = statbuf.st_size; dc->ft->dwThisFileDate = statbuf.st_mtime; dc->ft->dwFileBytesDone = 0; @@ -128,16 +117,18 @@ static void file_sendNextFile(CIcqProto* ppro, directconnect* dc) szThisFileNameAnsi = _strdup(pszThisFileName); // Legacy fix if (!utf8_decode(szThisSubDir, &szThisSubDirAnsi)) szThisSubDirAnsi = _strdup(szThisSubDir); // Legacy fix - WORD wThisFileNameLen = strlennull(szThisFileNameAnsi); - WORD wThisSubDirLen = strlennull(szThisSubDirAnsi); + + size_t wThisFileNameLen = mir_strlen(szThisFileNameAnsi); + size_t wThisSubDirLen = mir_strlen(szThisSubDirAnsi); - directPacketInit(&packet, (WORD)(20 + wThisFileNameLen + wThisSubDirLen)); + icq_packet packet; + directPacketInit(&packet, 20 + wThisFileNameLen + wThisSubDirLen); packByte(&packet, PEER_FILE_NEXTFILE); /* Ident */ packByte(&packet, (BYTE)((statbuf.st_mode & _S_IFDIR) != 0)); // Is subdir - packLEWord(&packet, (WORD)(wThisFileNameLen + 1)); - packBuffer(&packet, (LPBYTE)szThisFileNameAnsi, (WORD)(wThisFileNameLen + 1)); - packLEWord(&packet, (WORD)(wThisSubDirLen + 1)); - packBuffer(&packet, (LPBYTE)szThisSubDirAnsi, (WORD)(wThisSubDirLen + 1)); + packLEWord(&packet, WORD(wThisFileNameLen + 1)); + packBuffer(&packet, (LPBYTE)szThisFileNameAnsi, wThisFileNameLen + 1); + packLEWord(&packet, WORD(wThisSubDirLen + 1)); + packBuffer(&packet, (LPBYTE)szThisSubDirAnsi, wThisSubDirLen + 1); packLEDWord(&packet, dc->ft->dwThisFileSize); packLEDWord(&packet, statbuf.st_mtime); packLEDWord(&packet, dc->ft->dwTransferSpeed); @@ -152,7 +143,6 @@ static void file_sendNextFile(CIcqProto* ppro, directconnect* dc) static void file_sendResume(CIcqProto* ppro, directconnect* dc) { icq_packet packet; - directPacketInit(&packet, 17); packByte(&packet, PEER_FILE_RESUME); /* Ident */ packLEDWord(&packet, dc->ft->dwFileBytesDone); /* file resume */ @@ -177,9 +167,9 @@ static void file_sendData(CIcqProto* ppro, directconnect* dc) if (bytesRead == -1) return; - directPacketInit(&packet, (WORD)(1 + bytesRead)); + directPacketInit(&packet, 1 + bytesRead); packByte(&packet, PEER_FILE_DATA); /* Ident */ - packBuffer(&packet, buf, (WORD)bytesRead); + packBuffer(&packet, buf, bytesRead); ppro->sendDirectPacket(dc, &packet); } @@ -217,7 +207,8 @@ void CIcqProto::icq_sendFileResume(filetransfer *ft, int action, const char *szF return; directconnect *dc = FindFileTransferDC(ft); - if (!dc) return; // something is broken... + if (!dc) + return; // something is broken... int openFlags; @@ -267,9 +258,9 @@ void CIcqProto::icq_sendFileResume(filetransfer *ft, int action, const char *szF // small utility function void NormalizeBackslash(char* path) { - int len = strlennull(path); - - if (len && path[len - 1] != '\\') strcat(path, "\\"); + size_t len = mir_strlen(path); + if (len && path[len-1] != '\\') + strcat(path, "\\"); } /* a file transfer looks like this: @@ -282,7 +273,7 @@ S: 6 * many (for more files, send 2, 3, 6*many) */ -void CIcqProto::handleFileTransferPacket(directconnect* dc, PBYTE buf, WORD wLen) +void CIcqProto::handleFileTransferPacket(directconnect* dc, PBYTE buf, size_t wLen) { if (wLen < 1) return; @@ -381,7 +372,7 @@ void CIcqProto::handleFileTransferPacket(directconnect* dc, PBYTE buf, WORD wLen break; } - char *szFullPath = (char*)SAFE_MALLOC(strlennull(dc->ft->szSavePath) + strlennull(dc->ft->szThisSubdir) + strlennull(dc->ft->szThisFile) + 3); + char *szFullPath = (char*)SAFE_MALLOC(mir_strlen(dc->ft->szSavePath) + mir_strlen(dc->ft->szThisSubdir) + mir_strlen(dc->ft->szThisFile) + 3); strcpy(szFullPath, dc->ft->szSavePath); NormalizeBackslash(szFullPath); strcat(szFullPath, dc->ft->szThisSubdir); @@ -458,12 +449,12 @@ void CIcqProto::handleFileTransferPacket(directconnect* dc, PBYTE buf, WORD wLen if (dc->ft->fileId == -1) break; buf++; wLen--; - _write(dc->ft->fileId, buf, wLen); + _write(dc->ft->fileId, buf, (unsigned)wLen); } else wLen = 0; - dc->ft->dwBytesDone += wLen; - dc->ft->dwFileBytesDone += wLen; + dc->ft->dwBytesDone += (DWORD)wLen; + dc->ft->dwFileBytesDone += (DWORD)wLen; if (GetTickCount() > dc->ft->dwLastNotify + 500 || wLen < 2048) { PROTOFILETRANSFERSTATUS pfts; diff --git a/protocols/IcqOscarJ/src/icq_http.cpp b/protocols/IcqOscarJ/src/icq_http.cpp index d5926b902a..1d0283456a 100644 --- a/protocols/IcqOscarJ/src/icq_http.cpp +++ b/protocols/IcqOscarJ/src/icq_http.cpp @@ -32,7 +32,7 @@ int icq_httpGatewayInit(HANDLE hConn, NETLIBOPENCONNECTION *nloc, NETLIBHTTPREQUEST *nlhr) { // initial response from ICQ http gateway - WORD wLen, wVersion, wType; + size_t wLen, wVersion, wType; WORD wIpLen; DWORD dwSid1, dwSid2, dwSid3, dwSid4; BYTE *buf; @@ -86,12 +86,12 @@ int icq_httpGatewayBegin(HANDLE hConn, NETLIBOPENCONNECTION* nloc) icq_packet packet; size_t serverNameLen; - serverNameLen = strlennull(nloc->szHost); + serverNameLen = mir_strlen(nloc->szHost); packet.wLen = (WORD)(serverNameLen + 4); write_httphdr(&packet, HTTP_PACKETTYPE_LOGIN, GetGatewayIndex(hConn)); packWord(&packet, (WORD)serverNameLen); - packBuffer(&packet, (LPBYTE)nloc->szHost, (WORD)serverNameLen); + packBuffer(&packet, (LPBYTE)nloc->szHost, serverNameLen); packWord(&packet, nloc->wPort); INT_PTR res = Netlib_Send(hConn, (char*)packet.pData, packet.wLen, MSG_DUMPPROXY|MSG_NOHTTPGATEWAYWRAP); SAFE_FREE((void**)&packet.pData); @@ -117,7 +117,7 @@ int icq_httpGatewayWrapSend(HANDLE hConn, PBYTE buf, int len, int flags, MIRANDA // send wrapped data packet.wLen = curLen; write_httphdr(&packet, HTTP_PACKETTYPE_FLAP, GetGatewayIndex(hConn)); - packBuffer(&packet, sendBuf, (WORD)curLen); + packBuffer(&packet, sendBuf, curLen); NETLIBBUFFER nlb={ (char*)packet.pData, packet.wLen, flags }; curResult = pfnNetlibSend((WPARAM)hConn, (LPARAM)&nlb); @@ -141,14 +141,13 @@ int icq_httpGatewayWrapSend(HANDLE hConn, PBYTE buf, int len, int flags, MIRANDA PBYTE icq_httpGatewayUnwrapRecv(NETLIBHTTPREQUEST* nlhr, PBYTE buf, int len, int* outBufLen, void *(*NetlibRealloc)(void *, size_t)) { - WORD wLen, wType; + size_t wLen, wType; DWORD dwPackSeq; PBYTE tbuf; - int i, copyBytes; - + size_t i = 0; tbuf = buf; - for(i = 0;;) + for(;;) { if (tbuf - buf + 2 > len) break; @@ -163,7 +162,7 @@ PBYTE icq_httpGatewayUnwrapRecv(NETLIBHTTPREQUEST* nlhr, PBYTE buf, int len, int unpackDWord(&tbuf, &dwPackSeq); if (wType == HTTP_PACKETTYPE_FLAP) { // it is normal data packet - copyBytes = wLen - 12; + size_t copyBytes = wLen - 12; if (copyBytes > len - i) { /* invalid data - do our best to get something out of it */ @@ -189,7 +188,7 @@ PBYTE icq_httpGatewayUnwrapRecv(NETLIBHTTPREQUEST* nlhr, PBYTE buf, int len, int } tbuf += wLen - 12; } - *outBufLen = i; + *outBufLen = (int)i; return buf; } diff --git a/protocols/IcqOscarJ/src/icq_infoupdate.cpp b/protocols/IcqOscarJ/src/icq_infoupdate.cpp index 7d1bfba072..be305be872 100644 --- a/protocols/IcqOscarJ/src/icq_infoupdate.cpp +++ b/protocols/IcqOscarJ/src/icq_infoupdate.cpp @@ -262,7 +262,7 @@ void __cdecl CIcqProto::InfoUpdateThread( void* ) userinfo *hContactList[LISTSIZE]; int nListIndex = 0; BYTE *pRequestData = NULL; - int nRequestSize = 0; + size_t nRequestSize = 0; infoUpdateMutex->Enter(); for (i = 0; i < LISTSIZE; i++) { @@ -271,7 +271,7 @@ void __cdecl CIcqProto::InfoUpdateThread( void* ) if (IsMetaInfoChanged(m_infoUpdateList[i].hContact)) { if (m_infoUpdateList[i].queued + 5 < now) { BYTE *pItem = NULL; - int nItemSize = 0; + size_t nItemSize = 0; DBVARIANT dbv = { DBVT_DELETED }; if (!getSetting(m_infoUpdateList[i].hContact, DBSETTING_METAINFO_TOKEN, &dbv)) { // retrieve user details using privacy token diff --git a/protocols/IcqOscarJ/src/icq_opts.cpp b/protocols/IcqOscarJ/src/icq_opts.cpp index be0a3b5ed5..d3466c6770 100644 --- a/protocols/IcqOscarJ/src/icq_opts.cpp +++ b/protocols/IcqOscarJ/src/icq_opts.cpp @@ -147,7 +147,7 @@ static INT_PTR CALLBACK DlgProcIcqOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LP ppro->setDword(UNIQUEIDSETTING, GetDlgItemInt(hwndDlg, IDC_ICQNUM, NULL, FALSE)); GetDlgItemTextA(hwndDlg, IDC_PASSWORD, str, sizeof(ppro->m_szPassword)); - if (strlennull(str)) { + if (mir_strlen(str)) { strcpy(ppro->m_szPassword, str); ppro->m_bRememberPwd = true; } @@ -259,13 +259,13 @@ static INT_PTR CALLBACK DlgProcIcqPrivacyOpts(HWND hwndDlg, UINT msg, WPARAM wPa if (ppro->icqOnline()) { PBYTE buf = NULL; - int buflen = 0; + size_t buflen = 0; ppackTLVWord(&buf, &buflen, 0x19A, !ppro->getByte("Auth", 1)); ppackTLVByte(&buf, &buflen, 0x212, ppro->getByte("WebAware", 0)); ppackTLVWord(&buf, &buflen, 0x1F9, ppro->getByte("PrivacyLevel", 1)); - ppro->icq_changeUserDirectoryInfoServ(buf, (WORD)buflen, DIRECTORYREQUEST_UPDATEPRIVACY); + ppro->icq_changeUserDirectoryInfoServ(buf, buflen, DIRECTORYREQUEST_UPDATEPRIVACY); SAFE_FREE((void**)&buf); diff --git a/protocols/IcqOscarJ/src/icq_packet.cpp b/protocols/IcqOscarJ/src/icq_packet.cpp index 70852bb534..0211b9528a 100644 --- a/protocols/IcqOscarJ/src/icq_packet.cpp +++ b/protocols/IcqOscarJ/src/icq_packet.cpp @@ -64,22 +64,22 @@ void __fastcall write_flap(icq_packet *pPacket, BYTE byFlapChannel) packWord(pPacket, (WORD)(pPacket->wLen - 6)); // This counter should not include the flap header (thus the -6) } -void __fastcall serverPacketInit(icq_packet *pPacket, WORD wSize) +void __fastcall serverPacketInit(icq_packet *pPacket, size_t wSize) { - pPacket->wLen = wSize; + pPacket->wLen = (WORD)wSize; write_flap(pPacket, ICQ_DATA_CHAN); } -void __fastcall directPacketInit(icq_packet *pPacket, DWORD dwSize) +void __fastcall directPacketInit(icq_packet *pPacket, size_t dwSize) { pPacket->wPlace = 0; - pPacket->wLen = (WORD)dwSize; - pPacket->pData = (BYTE *)SAFE_MALLOC(dwSize + 2); + pPacket->wLen = (WORD)dwSize; + pPacket->pData = (BYTE *)SAFE_MALLOC(dwSize + 2); packLEWord(pPacket, pPacket->wLen); } -void __fastcall serverCookieInit(icq_packet *pPacket, BYTE *pCookie, WORD wCookieSize) +void __fastcall serverCookieInit(icq_packet *pPacket, BYTE *pCookie, size_t wCookieSize) { pPacket->wLen = (WORD)(wCookieSize + 8 + sizeof(CLIENT_ID_STRING) + 66); @@ -88,7 +88,7 @@ void __fastcall serverCookieInit(icq_packet *pPacket, BYTE *pCookie, WORD wCooki packTLV(pPacket, 0x06, wCookieSize, pCookie); // Pack client identification details. - packTLV(pPacket, 0x0003, (WORD)sizeof(CLIENT_ID_STRING)-1, (LPBYTE)CLIENT_ID_STRING); + packTLV(pPacket, 0x0003, (WORD)sizeof(CLIENT_ID_STRING) - 1, (LPBYTE)CLIENT_ID_STRING); packTLVWord(pPacket, 0x0017, CLIENT_VERSION_MAJOR); packTLVWord(pPacket, 0x0018, CLIENT_VERSION_MINOR); packTLVWord(pPacket, 0x0019, CLIENT_VERSION_LESSER); @@ -118,7 +118,7 @@ void __fastcall packDWord(icq_packet *pPacket, DWORD dwValue) pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0xff000000) >> 24); pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0x00ff0000) >> 16); pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0x0000ff00) >> 8); - pPacket->pData[pPacket->wPlace++] = (BYTE) (dwValue & 0x000000ff); + pPacket->pData[pPacket->wPlace++] = (BYTE)(dwValue & 0x000000ff); } void __fastcall packQWord(icq_packet *pPacket, DWORD64 qwValue) @@ -127,10 +127,10 @@ void __fastcall packQWord(icq_packet *pPacket, DWORD64 qwValue) packDWord(pPacket, (DWORD)(qwValue & 0xffffffff)); } -void packTLV(icq_packet *pPacket, WORD wType, WORD wLength, const BYTE *pbyValue) +void packTLV(icq_packet *pPacket, WORD wType, size_t wLength, const BYTE *pbyValue) { packWord(pPacket, wType); - packWord(pPacket, wLength); + packWord(pPacket, (WORD)wLength); packBuffer(pPacket, pbyValue, wLength); } @@ -151,57 +151,45 @@ void packTLVDWord(icq_packet *pPacket, WORD wType, DWORD dwValue) void packTLVUID(icq_packet *pPacket, WORD wType, DWORD dwUin, const char *szUid) { - if (dwUin) - { - char szUin[UINMAXLEN]; + if (dwUin) { + char szUin[UINMAXLEN]; - _ltoa(dwUin, szUin, 10); + _ltoa(dwUin, szUin, 10); - packTLV(pPacket, wType, getUINLen(dwUin), (BYTE*)szUin); - } - else if (szUid) - packTLV(pPacket, wType, strlennull(szUid), (BYTE*)szUid); + packTLV(pPacket, wType, getUINLen(dwUin), (BYTE*)szUin); + } + else if (szUid) + packTLV(pPacket, wType, mir_strlen(szUid), (BYTE*)szUid); } // Pack a preformatted buffer. // This can be used to pack strings or any type of raw data. -void packBuffer(icq_packet *pPacket, const BYTE* pbyBuffer, WORD wLength) +void packBuffer(icq_packet *pPacket, const BYTE* pbyBuffer, size_t wLength) { - while (wLength) - { + while (wLength) { pPacket->pData[pPacket->wPlace++] = *pbyBuffer++; wLength--; } } -// Pack a buffer and prepend it with the size as a LE WORD. -// Commented out since its not actually used anywhere right now. -//void packLEWordSizedBuffer(icq_packet* pPacket, const BYTE* pbyBuffer, WORD wLength) -//{ -// -// packLEWord(pPacket, wLength); -// packBuffer(pPacket, pbyBuffer, wLength); -// -//} - int __fastcall getUINLen(DWORD dwUin) { - BYTE dwUinLen = 0; + BYTE dwUinLen = 0; - while(dwUin) { - dwUin /= 10; - dwUinLen += 1; - } - return dwUinLen; + while (dwUin) { + dwUin /= 10; + dwUinLen += 1; + } + return dwUinLen; } int __fastcall getUIDLen(DWORD dwUin, const char *szUid) { if (dwUin) return getUINLen(dwUin); - else - return strlennull(szUid); + + return (int)mir_strlen(szUid); } void __fastcall packUIN(icq_packet *pPacket, DWORD dwUin) @@ -219,9 +207,8 @@ void __fastcall packUID(icq_packet *pPacket, DWORD dwUin, const char *szUid) { if (dwUin) packUIN(pPacket, dwUin); - else - { - BYTE nLen = strlennull(szUid); + else { + BYTE nLen = (BYTE)mir_strlen(szUid); packByte(pPacket, nLen); packBuffer(pPacket, (LPBYTE)szUid, nLen); } @@ -230,7 +217,7 @@ void __fastcall packUID(icq_packet *pPacket, DWORD dwUin, const char *szUid) void packFNACHeader(icq_packet *pPacket, WORD wFamily, WORD wSubtype) { - packFNACHeader(pPacket, wFamily, wSubtype, 0, wSubtype << 0x10); + packFNACHeader(pPacket, wFamily, wSubtype, 0, wSubtype << 0x10); } @@ -248,21 +235,21 @@ void packFNACHeader(icq_packet *pPacket, WORD wFamily, WORD wSubtype, WORD wFlag void packFNACHeader(icq_packet *pPacket, WORD wFamily, WORD wSubtype, WORD wFlags, DWORD dwSequence, WORD wVersion) { - packFNACHeader(pPacket, wFamily, wSubtype, wFlags | 0x8000, dwSequence); - packWord(pPacket, 0x06); - packTLVWord(pPacket, 0x01, wVersion); + packFNACHeader(pPacket, wFamily, wSubtype, wFlags | 0x8000, dwSequence); + packWord(pPacket, 0x06); + packTLVWord(pPacket, 0x01, wVersion); } void __fastcall packLEWord(icq_packet *pPacket, WORD wValue) { - pPacket->pData[pPacket->wPlace++] = (wValue & 0x00ff); + pPacket->pData[pPacket->wPlace++] = (wValue & 0x00ff); pPacket->pData[pPacket->wPlace++] = ((wValue & 0xff00) >> 8); } void __fastcall packLEDWord(icq_packet *pPacket, DWORD dwValue) { - pPacket->pData[pPacket->wPlace++] = (BYTE) (dwValue & 0x000000ff); + pPacket->pData[pPacket->wPlace++] = (BYTE)(dwValue & 0x000000ff); pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0x0000ff00) >> 8); pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0x00ff0000) >> 16); pPacket->pData[pPacket->wPlace++] = (BYTE)((dwValue & 0xff000000) >> 24); @@ -272,17 +259,17 @@ void __fastcall packLEDWord(icq_packet *pPacket, DWORD dwValue) /* helper function to place numerics to buffer */ static void packWord(PBYTE buf, WORD wValue) { - *(buf) = ((wValue & 0xff00) >> 8); - *(buf + 1) = (wValue & 0x00ff); + *(buf) = ((wValue & 0xff00) >> 8); + *(buf + 1) = (wValue & 0x00ff); } static void packDWord(PBYTE buf, DWORD dwValue) { - *(buf) = (BYTE)((dwValue & 0xff000000) >> 24); - *(buf + 1) = (BYTE)((dwValue & 0x00ff0000) >> 16); - *(buf + 2) = (BYTE)((dwValue & 0x0000ff00) >> 8); - *(buf + 3) = (BYTE) (dwValue & 0x000000ff); + *(buf) = (BYTE)((dwValue & 0xff000000) >> 24); + *(buf + 1) = (BYTE)((dwValue & 0x00ff0000) >> 16); + *(buf + 2) = (BYTE)((dwValue & 0x0000ff00) >> 8); + *(buf + 3) = (BYTE)(dwValue & 0x000000ff); } @@ -293,7 +280,7 @@ static void packQWord(PBYTE buf, DWORD64 qwValue) } -void ppackByte(PBYTE *buf, int *buflen, BYTE byValue) +void ppackByte(PBYTE *buf, size_t *buflen, BYTE byValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 1 + *buflen); *(*buf + *buflen) = byValue; @@ -301,23 +288,23 @@ void ppackByte(PBYTE *buf, int *buflen, BYTE byValue) } -void ppackWord(PBYTE *buf, int *buflen, WORD wValue) +void ppackWord(PBYTE *buf, size_t *buflen, WORD wValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 2 + *buflen); - packWord(*buf + *buflen, wValue); + packWord(*buf + *buflen, wValue); *buflen += 2; } -void ppackLEWord(PBYTE *buf, int *buflen, WORD wValue) +void ppackLEWord(PBYTE *buf, size_t *buflen, WORD wValue) { - *buf=(PBYTE)SAFE_REALLOC(*buf, 2 + *buflen); + *buf = (PBYTE)SAFE_REALLOC(*buf, 2 + *buflen); *(PWORD)(*buf + *buflen) = wValue; - *buflen+=2; + *buflen += 2; } -void ppackLEDWord(PBYTE *buf, int *buflen, DWORD dwValue) +void ppackLEDWord(PBYTE *buf, size_t *buflen, DWORD dwValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 4 + *buflen); *(PDWORD)(*buf + *buflen) = dwValue; @@ -325,99 +312,97 @@ void ppackLEDWord(PBYTE *buf, int *buflen, DWORD dwValue) } -void ppackLELNTS(PBYTE *buf, int *buflen, const char *str) +void ppackLELNTS(PBYTE *buf, size_t *buflen, const char *str) { - WORD len = strlennull(str); - ppackLEWord(buf, buflen, len); + size_t len = mir_strlen(str); + ppackLEWord(buf, buflen, (WORD)len); *buf = (PBYTE)SAFE_REALLOC(*buf, *buflen + len); memcpy(*buf + *buflen, str, len); - *buflen += len; + *buflen += (WORD)len; } -void ppackBuffer(PBYTE *buf, int *buflen, WORD wLength, const BYTE *pbyValue) +void ppackBuffer(PBYTE *buf, size_t *buflen, size_t wLength, const BYTE *pbyValue) { - if (wLength) - { - *buf = (PBYTE)SAFE_REALLOC(*buf, wLength + *buflen); - memcpy(*buf + *buflen, pbyValue, wLength); - *buflen += wLength; - } + if (wLength) { + *buf = (PBYTE)SAFE_REALLOC(*buf, wLength + *buflen); + memcpy(*buf + *buflen, pbyValue, wLength); + *buflen += wLength; + } } -void ppackTLV(PBYTE *buf, int *buflen, WORD wType, WORD wLength, const BYTE *pbyValue) +void ppackTLV(PBYTE *buf, size_t *buflen, WORD wType, size_t wLength, const BYTE *pbyValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 4 + wLength + *buflen); packWord(*buf + *buflen, wType); - packWord(*buf + *buflen + 2, wLength); - if (wLength) - memcpy(*buf + *buflen + 4, pbyValue, wLength); + packWord(*buf + *buflen + 2, (WORD)wLength); + if (wLength) + memcpy(*buf + *buflen + 4, pbyValue, wLength); *buflen += 4 + wLength; } -void ppackTLVByte(PBYTE *buf, int *buflen, WORD wType, BYTE byValue) +void ppackTLVByte(PBYTE *buf, size_t *buflen, WORD wType, BYTE byValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 5 + *buflen); packWord(*buf + *buflen, wType); packWord(*buf + *buflen + 2, 1); - *(*buf + *buflen + 4) = byValue; + *(*buf + *buflen + 4) = byValue; *buflen += 5; } -void ppackTLVWord(PBYTE *buf, int *buflen, WORD wType, WORD wValue) +void ppackTLVWord(PBYTE *buf, size_t *buflen, WORD wType, WORD wValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 6 + *buflen); packWord(*buf + *buflen, wType); packWord(*buf + *buflen + 2, 2); - packWord(*buf + *buflen + 4, wValue); + packWord(*buf + *buflen + 4, wValue); *buflen += 6; } -void ppackTLVDWord(PBYTE *buf, int *buflen, WORD wType, DWORD dwValue) +void ppackTLVDWord(PBYTE *buf, size_t *buflen, WORD wType, DWORD dwValue) { *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen); packWord(*buf + *buflen, wType); packWord(*buf + *buflen + 2, 4); - packDWord(*buf + *buflen + 4, dwValue); + packDWord(*buf + *buflen + 4, dwValue); *buflen += 8; } -void ppackTLVDouble(PBYTE *buf, int *buflen, WORD wType, double dValue) +void ppackTLVDouble(PBYTE *buf, size_t *buflen, WORD wType, double dValue) { - DWORD64 qwValue; + DWORD64 qwValue; - memcpy(&qwValue, &dValue, 8); + memcpy(&qwValue, &dValue, 8); *buf = (PBYTE)SAFE_REALLOC(*buf, 12 + *buflen); packWord(*buf + *buflen, wType); packWord(*buf + *buflen + 2, 8); - packQWord(*buf + *buflen + 4, qwValue); + packQWord(*buf + *buflen + 4, qwValue); *buflen += 12; } -void ppackTLVUID(PBYTE *buf, int *buflen, WORD wType, DWORD dwUin, const char *szUid) +void ppackTLVUID(PBYTE *buf, size_t *buflen, WORD wType, DWORD dwUin, const char *szUid) { - if (dwUin) - { - char szUin[UINMAXLEN]; + if (dwUin) { + char szUin[UINMAXLEN]; - _ltoa(dwUin, szUin, 10); + _ltoa(dwUin, szUin, 10); - ppackTLV(buf, buflen, wType, getUINLen(dwUin), (BYTE*)szUin); - } - else if (szUid) - ppackTLV(buf, buflen, wType, strlennull(szUid), (BYTE*)szUid); + ppackTLV(buf, buflen, wType, getUINLen(dwUin), (BYTE*)szUin); + } + else if (szUid) + ppackTLV(buf, buflen, wType, mir_strlen(szUid), (BYTE*)szUid); } // *** TLV based (!!! WORDs and DWORDs are LE !!!) -void ppackLETLVByte(PBYTE *buf, int *buflen, BYTE byValue, WORD wType, BYTE always) +void ppackLETLVByte(PBYTE *buf, size_t *buflen, BYTE byValue, WORD wType, BYTE always) { if (!always && !byValue) return; @@ -429,7 +414,7 @@ void ppackLETLVByte(PBYTE *buf, int *buflen, BYTE byValue, WORD wType, BYTE alwa } -void ppackLETLVWord(PBYTE *buf, int *buflen, WORD wValue, WORD wType, BYTE always) +void ppackLETLVWord(PBYTE *buf, size_t *buflen, WORD wValue, WORD wType, BYTE always) { if (!always && !wValue) return; @@ -441,7 +426,7 @@ void ppackLETLVWord(PBYTE *buf, int *buflen, WORD wValue, WORD wType, BYTE alway } -void ppackLETLVDWord(PBYTE *buf, int *buflen, DWORD dwValue, WORD wType, BYTE always) +void ppackLETLVDWord(PBYTE *buf, size_t *buflen, DWORD dwValue, WORD wType, BYTE always) { if (!always && !dwValue) return; @@ -453,21 +438,21 @@ void ppackLETLVDWord(PBYTE *buf, int *buflen, DWORD dwValue, WORD wType, BYTE al } -void packLETLVLNTS(PBYTE *buf, int *bufpos, const char *str, WORD wType) +void packLETLVLNTS(PBYTE *buf, size_t *bufpos, const char *str, WORD wType) { - int len = strlennull(str) + 1; + size_t len = mir_strlen(str) + 1; *(PWORD)(*buf + *bufpos) = wType; - *(PWORD)(*buf + *bufpos + 2) = len + 2; - *(PWORD)(*buf + *bufpos + 4) = len; + *(PWORD)(*buf + *bufpos + 2) = DWORD(len + 2); + *(PWORD)(*buf + *bufpos + 4) = DWORD(len); memcpy(*buf + *bufpos + 6, str, len); *bufpos += len + 6; } -void ppackLETLVLNTS(PBYTE *buf, int *buflen, const char *str, WORD wType, BYTE always) +void ppackLETLVLNTS(PBYTE *buf, size_t *buflen, const char *str, WORD wType, BYTE always) { - int len = strlennull(str) + 1; + size_t len = mir_strlen(str) + 1; if (!always && len < 2) return; @@ -476,37 +461,37 @@ void ppackLETLVLNTS(PBYTE *buf, int *buflen, const char *str, WORD wType, BYTE a } -void ppackLETLVWordLNTS(PBYTE *buf, int *buflen, WORD w, const char *str, WORD wType, BYTE always) +void ppackLETLVWordLNTS(PBYTE *buf, size_t *buflen, WORD w, const char *str, WORD wType, BYTE always) { - int len = strlennull(str) + 1; + size_t len = mir_strlen(str) + 1; if (!always && len < 2 && !w) return; *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen + len); *(PWORD)(*buf + *buflen) = wType; - *(PWORD)(*buf + *buflen + 2) = len + 4; + *(PWORD)(*buf + *buflen + 2) = DWORD(len + 4); *(PWORD)(*buf + *buflen + 4) = w; - *(PWORD)(*buf + *buflen + 6) = len; + *(PWORD)(*buf + *buflen + 6) = DWORD(len); memcpy(*buf + *buflen + 8, str, len); *buflen += len + 8; } -void ppackLETLVLNTSByte(PBYTE *buf, int *buflen, const char *str, BYTE b, WORD wType) +void ppackLETLVLNTSByte(PBYTE *buf, size_t *buflen, const char *str, BYTE b, WORD wType) { - int len = strlennull(str) + 1; + size_t len = mir_strlen(str) + 1; *buf = (PBYTE)SAFE_REALLOC(*buf, 7 + *buflen + len); *(PWORD)(*buf + *buflen) = wType; - *(PWORD)(*buf + *buflen + 2) = len + 3; - *(PWORD)(*buf + *buflen + 4) = len; + *(PWORD)(*buf + *buflen + 2) = DWORD(len + 3); + *(PWORD)(*buf + *buflen + 4) = DWORD(len); memcpy(*buf + *buflen + 6, str, len); *(*buf + *buflen + 6 + len) = b; *buflen += len + 7; } -void CIcqProto::ppackLETLVLNTSfromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType) +void CIcqProto::ppackLETLVLNTSfromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType) { char szTmp[1024]; char *str = ""; @@ -517,7 +502,7 @@ void CIcqProto::ppackLETLVLNTSfromDB(PBYTE *buf, int *buflen, const char *szSett ppackLETLVLNTS(buf, buflen, str, wType, 1); } -void CIcqProto::ppackLETLVWordLNTSfromDB(PBYTE *buf, int *buflen, WORD w, const char *szSetting, WORD wType) +void CIcqProto::ppackLETLVWordLNTSfromDB(PBYTE *buf, size_t *buflen, WORD w, const char *szSetting, WORD wType) { char szTmp[1024]; char *str = ""; @@ -528,7 +513,7 @@ void CIcqProto::ppackLETLVWordLNTSfromDB(PBYTE *buf, int *buflen, WORD w, const ppackLETLVWordLNTS(buf, buflen, w, str, wType, 1); } -void CIcqProto::ppackLETLVLNTSBytefromDB(PBYTE *buf, int *buflen, const char *szSetting, BYTE b, WORD wType) +void CIcqProto::ppackLETLVLNTSBytefromDB(PBYTE *buf, size_t *buflen, const char *szSetting, BYTE b, WORD wType) { char szTmp[1024]; char *str = ""; @@ -540,7 +525,7 @@ void CIcqProto::ppackLETLVLNTSBytefromDB(PBYTE *buf, int *buflen, const char *sz } -void CIcqProto::ppackTLVStringFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType) +void CIcqProto::ppackTLVStringFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType) { char szTmp[1024]; char *str = ""; @@ -548,123 +533,118 @@ void CIcqProto::ppackTLVStringFromDB(PBYTE *buf, int *buflen, const char *szSett if (!getSettingStringStatic(NULL, szSetting, szTmp, sizeof(szTmp))) str = szTmp; - ppackTLV(buf, buflen, wType, strlennull(str), (PBYTE)str); + ppackTLV(buf, buflen, wType, mir_strlen(str), (PBYTE)str); } -void CIcqProto::ppackTLVStringUtfFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType) +void CIcqProto::ppackTLVStringUtfFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType) { char *str = getSettingStringUtf(NULL, szSetting, NULL); - ppackTLV(buf, buflen, wType, strlennull(str), (PBYTE)str); + ppackTLV(buf, buflen, wType, mir_strlen(str), (PBYTE)str); - SAFE_FREE((void**)&str); + SAFE_FREE((void**)&str); } -void CIcqProto::ppackTLVDateFromDB(PBYTE *buf, int *buflen, const char *szSettingYear, const char *szSettingMonth, const char *szSettingDay, WORD wType) +void CIcqProto::ppackTLVDateFromDB(PBYTE *buf, size_t *buflen, const char *szSettingYear, const char *szSettingMonth, const char *szSettingDay, WORD wType) { - SYSTEMTIME sTime = {0}; - double time = 0; + SYSTEMTIME sTime = { 0 }; + double time = 0; - sTime.wYear = getWord(szSettingYear, 0); - sTime.wMonth = getByte(szSettingMonth, 0); - sTime.wDay = getByte(szSettingDay, 0); - if (sTime.wYear || sTime.wMonth || sTime.wDay) - { - SystemTimeToVariantTime(&sTime, &time); - time -= 2; - } + sTime.wYear = getWord(szSettingYear, 0); + sTime.wMonth = getByte(szSettingMonth, 0); + sTime.wDay = getByte(szSettingDay, 0); + if (sTime.wYear || sTime.wMonth || sTime.wDay) { + SystemTimeToVariantTime(&sTime, &time); + time -= 2; + } - ppackTLVDouble(buf, buflen, wType, time); + ppackTLVDouble(buf, buflen, wType, time); } -int CIcqProto::ppackTLVWordStringItemFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID) +int CIcqProto::ppackTLVWordStringItemFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID) { - char szTmp[1024]; - char *str = NULL; + char szTmp[1024]; + char *str = NULL; - if (!getSettingStringStatic(NULL, szSetting, szTmp, sizeof(szTmp))) - str = szTmp; + if (!getSettingStringStatic(NULL, szSetting, szTmp, sizeof(szTmp))) + str = szTmp; - if (str) - { - WORD wLen = strlennull(str); + if (str) { + size_t wLen = mir_strlen(str); - ppackWord(buf, buflen, wLen + 0x0A); - ppackTLVWord(buf, buflen, wTypeID, wID); - ppackTLV(buf, buflen, wTypeData, wLen, (PBYTE)str); + ppackWord(buf, buflen, WORD(wLen + 0x0A)); + ppackTLVWord(buf, buflen, wTypeID, wID); + ppackTLV(buf, buflen, wTypeData, wLen, (PBYTE)str); - return 1; // Success - } + return 1; // Success + } - return 0; // No data + return 0; // No data } -int CIcqProto::ppackTLVWordStringUtfItemFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID) +int CIcqProto::ppackTLVWordStringUtfItemFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID) { - char *str = getSettingStringUtf(NULL, szSetting, NULL); - - if (str) - { - WORD wLen = strlennull(str); - - ppackWord(buf, buflen, wLen + 0x0A); - ppackTLVWord(buf, buflen, wTypeID, wID); - ppackTLV(buf, buflen, wTypeData, wLen, (PBYTE)str); - - SAFE_FREE(&str); + char *str = getSettingStringUtf(NULL, szSetting, NULL); - return 1; // Success - } + if (str) { + size_t wLen = mir_strlen(str); - return 0; // No data -} + ppackWord(buf, buflen, WORD(wLen + 0x0A)); + ppackTLVWord(buf, buflen, wTypeID, wID); + ppackTLV(buf, buflen, wTypeData, wLen, (PBYTE)str); + SAFE_FREE(&str); -void ppackTLVBlockItems(PBYTE *buf, int *buflen, WORD wType, int *nItems, PBYTE *pBlock, WORD *wLength, BOOL bSingleItem) -{ - *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen + *wLength); - packWord(*buf + *buflen, wType); - packWord(*buf + *buflen + 2, (bSingleItem ? 4 : 2) + *wLength); - packWord(*buf + *buflen + 4, *nItems); - if (bSingleItem) - packWord(*buf + *buflen + 6, *wLength); - if (*wLength) - memcpy(*buf + *buflen + (bSingleItem ? 8 : 6), *pBlock, *wLength); - *buflen += (bSingleItem ? 8 : 6) + *wLength; + return 1; // Success + } - SAFE_FREE((void**)pBlock); - *wLength = 0; - *nItems = 0; + return 0; // No data } -void ppackTLVBlockItem(PBYTE *buf, int *buflen, WORD wType, PBYTE *pItem, WORD *wLength) +void ppackTLVBlockItems(PBYTE *buf, size_t *buflen, WORD wType, int *nItems, PBYTE *pBlock, WORD *wLength, BOOL bSingleItem) { - if (wLength) - { - *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen + *wLength); - packWord(*buf + *buflen, wType); - packWord(*buf + *buflen + 2, 4 + *wLength); - packWord(*buf + *buflen + 4, 1); - packWord(*buf + *buflen + 6, *wLength); - memcpy(*buf + *buflen + 8, *pItem, *wLength); - *buflen += 8 + *wLength; - } - else - { - *buf = (PBYTE)SAFE_REALLOC(*buf, 6 + *buflen); - packWord(*buf + *buflen, wType); - packWord(*buf + *buflen + 2, 0x02); - packWord(*buf + *buflen + 4, 0); - *buflen += 6; - } + *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen + *wLength); + packWord(*buf + *buflen, wType); + packWord(*buf + *buflen + 2, (bSingleItem ? 4 : 2) + *wLength); + packWord(*buf + *buflen + 4, *nItems); + if (bSingleItem) + packWord(*buf + *buflen + 6, *wLength); + if (*wLength) + memcpy(*buf + *buflen + (bSingleItem ? 8 : 6), *pBlock, *wLength); + *buflen += (bSingleItem ? 8 : 6) + *wLength; + + SAFE_FREE((void**)pBlock); + *wLength = 0; + *nItems = 0; +} + + +void ppackTLVBlockItem(PBYTE *buf, size_t *buflen, WORD wType, PBYTE *pItem, WORD *wLength) +{ + if (wLength) { + *buf = (PBYTE)SAFE_REALLOC(*buf, 8 + *buflen + *wLength); + packWord(*buf + *buflen, wType); + packWord(*buf + *buflen + 2, 4 + *wLength); + packWord(*buf + *buflen + 4, 1); + packWord(*buf + *buflen + 6, *wLength); + memcpy(*buf + *buflen + 8, *pItem, *wLength); + *buflen += 8 + *wLength; + } + else { + *buf = (PBYTE)SAFE_REALLOC(*buf, 6 + *buflen); + packWord(*buf + *buflen, wType); + packWord(*buf + *buflen + 2, 0x02); + packWord(*buf + *buflen + 4, 0); + *buflen += 6; + } - SAFE_FREE((void**)pItem); - *wLength = 0; + SAFE_FREE((void**)pItem); + *wLength = 0; } @@ -680,40 +660,48 @@ void __fastcall unpackWord(BYTE **pSource, WORD *wDestination) { BYTE *tmp = *pSource; - if (wDestination) - { - *wDestination = *tmp++ << 8; + if (wDestination) { + *wDestination = *tmp++ << 8; *wDestination |= *tmp++; *pSource = tmp; } - else - *pSource += 2; + else *pSource += 2; +} + +void __fastcall unpackWord(BYTE **pSource, size_t *wDestination) +{ + BYTE *tmp = *pSource; + + if (wDestination) { + *wDestination = *tmp++ << 8; + *wDestination |= *tmp++; + + *pSource = tmp; + } + else *pSource += 2; } void __fastcall unpackDWord(BYTE **pSource, DWORD *dwDestination) { BYTE *tmp = *pSource; - if (dwDestination) - { - *dwDestination = *tmp++ << 24; + if (dwDestination) { + *dwDestination = *tmp++ << 24; *dwDestination |= *tmp++ << 16; *dwDestination |= *tmp++ << 8; *dwDestination |= *tmp++; *pSource = tmp; } - else - *pSource += 4; + else *pSource += 4; } void __fastcall unpackQWord(BYTE **pSource, DWORD64 *qwDestination) { DWORD dwData; - if (qwDestination) - { + if (qwDestination) { unpackDWord(pSource, &dwData); *qwDestination = ((DWORD64)dwData) << 32; unpackDWord(pSource, &dwData); @@ -727,13 +715,24 @@ void __fastcall unpackLEWord(BYTE **buf, WORD *w) { BYTE *tmp = *buf; - if (w) - { + if (w) { *w = (*tmp++); *w |= ((*tmp++) << 8); } - else - tmp += 2; + else tmp += 2; + + *buf = tmp; +} + +void __fastcall unpackLEWord(BYTE **buf, size_t *w) +{ + BYTE *tmp = *buf; + + if (w) { + *w = (*tmp++); + *w |= ((*tmp++) << 8); + } + else tmp += 2; *buf = tmp; } @@ -742,25 +741,37 @@ void __fastcall unpackLEDWord(BYTE **buf, DWORD *dw) { BYTE *tmp = *buf; - if (dw) - { + if (dw) { *dw = (*tmp++); *dw |= ((*tmp++) << 8); *dw |= ((*tmp++) << 16); *dw |= ((*tmp++) << 24); } - else - tmp += 4; + else tmp += 4; *buf = tmp; } -void unpackString(BYTE **buf, char *string, WORD len) +void __fastcall unpackLEDWord(BYTE **buf, size_t *dw) { BYTE *tmp = *buf; - if (string) - { + if (dw) { + *dw = (*tmp++); + *dw |= ((*tmp++) << 8); + *dw |= ((*tmp++) << 16); + *dw |= ((*tmp++) << 24); + } + else tmp += 4; + + *buf = tmp; +} + +void unpackString(BYTE **buf, char *string, size_t len) +{ + BYTE *tmp = *buf; + + if (string) { while (len) /* Can have 0x00 so go by len */ { *string++ = *tmp++; @@ -773,12 +784,11 @@ void unpackString(BYTE **buf, char *string, WORD len) *buf = tmp; } -void unpackWideString(BYTE **buf, WCHAR *string, WORD len) +void unpackWideString(BYTE **buf, WCHAR *string, size_t len) { BYTE *tmp = *buf; - while (len > 1) - { + while (len > 1) { *string = (*tmp++ << 8); *string |= *tmp++; @@ -789,20 +799,20 @@ void unpackWideString(BYTE **buf, WCHAR *string, WORD len) // We have a stray byte at the end, this means that the buffer had an odd length // which indicates an error. _ASSERTE(len == 0); - if (len != 0) - { + if (len != 0) { // We dont copy the last byte but we still need to increase the buffer pointer // (we assume that 'len' was correct) since the calling function expects // that it is increased 'len' bytes. - *tmp += len; + *tmp += (BYTE)len; } *buf = tmp; } -void unpackTypedTLV(BYTE *buf, int buflen, WORD type, WORD *ttype, WORD *tlen, BYTE **ttlv) +void unpackTypedTLV(BYTE *buf, size_t buflen, WORD type, WORD *ttype, size_t *tlen, BYTE **ttlv) { - WORD wType, wLen; + WORD wType; + size_t wLen; NextTLV: // Unpack type and length @@ -810,8 +820,7 @@ NextTLV: unpackWord(&buf, &wLen); buflen -= 4; - if (wType != type && buflen >= wLen + 4) - { // Not the right TLV, try next + if (wType != type && buflen >= wLen + 4) { // Not the right TLV, try next buflen -= wLen; buf += wLen; goto NextTLV; @@ -820,10 +829,8 @@ NextTLV: if (wLen > buflen) wLen = buflen; // Make sure we have a good pointer - if (ttlv) - { - if (wLen) - { // Unpack and save value + if (ttlv) { + if (wLen) { // Unpack and save value *ttlv = (BYTE*)SAFE_MALLOC(wLen + 1); // Add 1 for \0 unpackString(&buf, (char*)*ttlv, wLen); *(*ttlv + wLen) = '\0'; @@ -840,42 +847,37 @@ NextTLV: } -BOOL CIcqProto::unpackUID(BYTE **ppBuf, WORD *pwLen, DWORD *pdwUIN, uid_str *ppszUID) +BOOL CIcqProto::unpackUID(BYTE **ppBuf, size_t *pwLen, DWORD *pdwUIN, uid_str *ppszUID) { - BYTE nUIDLen; - // sanity check if (!ppBuf || !pwLen || *pwLen < 1) return FALSE; // Sender UIN + BYTE nUIDLen; unpackByte(ppBuf, &nUIDLen); *pwLen -= 1; if ((nUIDLen > *pwLen) || (nUIDLen == 0)) return FALSE; - if (nUIDLen <= UINMAXLEN) - { // it can be uin, check - char szUIN[UINMAXLEN+1]; + if (nUIDLen <= UINMAXLEN) { // it can be uin, check + char szUIN[UINMAXLEN + 1]; unpackString(ppBuf, szUIN, nUIDLen); szUIN[nUIDLen] = '\0'; *pwLen -= nUIDLen; - if (IsStringUIN(szUIN)) - { + if (IsStringUIN(szUIN)) { *pdwUIN = atoi(szUIN); return TRUE; } - else - { // go back + else { // go back *ppBuf -= nUIDLen; *pwLen += nUIDLen; } } - if (!m_bAimEnabled || !ppszUID || !(*ppszUID)) - { // skip the UID data + if (!m_bAimEnabled || !ppszUID || !(*ppszUID)) { // skip the UID data *ppBuf += nUIDLen; *pwLen -= nUIDLen; diff --git a/protocols/IcqOscarJ/src/icq_packet.h b/protocols/IcqOscarJ/src/icq_packet.h index fde2b8551a..90c8bcff30 100644 --- a/protocols/IcqOscarJ/src/icq_packet.h +++ b/protocols/IcqOscarJ/src/icq_packet.h @@ -47,22 +47,22 @@ WORD generate_flap_sequence(); void __fastcall init_generic_packet(icq_packet *pPacket, WORD wHeaderLen); void write_httphdr(icq_packet *pPacket, WORD wType, DWORD dwSeq); void __fastcall write_flap(icq_packet *pPacket, BYTE byFlapChannel); -void __fastcall serverPacketInit(icq_packet *pPacket, WORD wSize); -void __fastcall directPacketInit(icq_packet *pPacket, DWORD dwSize); +void __fastcall serverPacketInit(icq_packet *pPacket, size_t cbSize); +void __fastcall directPacketInit(icq_packet *pPacket, size_t cbSize); -void __fastcall serverCookieInit(icq_packet *pPacket, BYTE *pCookie, WORD wCookieSize); +void __fastcall serverCookieInit(icq_packet *pPacket, BYTE *pCookie, size_t wCookieSize); void __fastcall packByte(icq_packet *pPacket, BYTE byValue); void __fastcall packWord(icq_packet *pPacket, WORD wValue); void __fastcall packDWord(icq_packet *pPacket, DWORD dwValue); void __fastcall packQWord(icq_packet *pPacket, DWORD64 qwValue); -void packTLV(icq_packet *pPacket, WORD wType, WORD wLength, const BYTE *pbyValue); +void packTLV(icq_packet *pPacket, WORD wType, size_t wLength, const BYTE *pbyValue); void packTLVWord(icq_packet *pPacket, WORD wType, WORD wData); void packTLVDWord(icq_packet *pPacket, WORD wType, DWORD dwData); void packTLVUID(icq_packet *pPacket, WORD wType, DWORD dwUin, const char *szUid); -void packBuffer(icq_packet *pPacket, const BYTE *pbyBuffer, WORD wLength); -//void packLEWordSizedBuffer(icq_packet* pPacket, const BYTE* pbyBuffer, WORD wLength); +void packBuffer(icq_packet *pPacket, const BYTE *pbyBuffer, size_t wLength); + int __fastcall getUINLen(DWORD dwUin); int __fastcall getUIDLen(DWORD dwUin, const char *szUid); void __fastcall packUIN(icq_packet *pPacket, DWORD dwUin); @@ -75,42 +75,46 @@ void packFNACHeader(icq_packet *pPacket, WORD wFamily, WORD wSubtype, WORD wFlag void __fastcall packLEWord(icq_packet *pPacket, WORD wValue); void __fastcall packLEDWord(icq_packet *pPacket, DWORD dwValue); -void packLETLVLNTS(PBYTE *buf, int *bufpos, const char *str, WORD wType); +void packLETLVLNTS(PBYTE *buf, size_t *bufpos, const char *str, WORD wType); -void ppackByte(PBYTE *buf, int *buflen, BYTE byValue); -void ppackWord(PBYTE *buf, int *buflen, WORD wValue); -void ppackLEWord(PBYTE *buf, int *buflen, WORD wValue); -void ppackLEDWord(PBYTE *buf, int *buflen, DWORD dwValue); -void ppackLELNTS(PBYTE *buf, int *buflen, const char *str); -void ppackBuffer(PBYTE *buf, int *buflen, WORD wLength, const BYTE *pbyValue); +void ppackByte(PBYTE *buf, size_t *buflen, BYTE byValue); +void ppackWord(PBYTE *buf, size_t *buflen, WORD wValue); +void ppackLEWord(PBYTE *buf, size_t *buflen, WORD wValue); +void ppackLEDWord(PBYTE *buf, size_t *buflen, DWORD dwValue); +void ppackLELNTS(PBYTE *buf, size_t *buflen, const char *str); +void ppackBuffer(PBYTE *buf, size_t *buflen, size_t wLength, const BYTE *pbyValue); -void ppackTLV(PBYTE *buf, int *buflen, WORD wType, WORD wLength, const BYTE *pbyValue); -void ppackTLVByte(PBYTE *buf, int *buflen, WORD wType, BYTE byValue); -void ppackTLVWord(PBYTE *buf, int *buflen, WORD wType, WORD wValue); -void ppackTLVDWord(PBYTE *buf, int *buflen, WORD wType, DWORD dwValue); -void ppackTLVDouble(PBYTE *buf, int *buflen, WORD wType, double dValue); -void ppackTLVUID(PBYTE *buf, int *buflen, WORD wType, DWORD dwUin, const char *szUid); +void ppackTLV(PBYTE *buf, size_t *buflen, WORD wType, size_t wLength, const BYTE *pbyValue); +void ppackTLVByte(PBYTE *buf, size_t *buflen, WORD wType, BYTE byValue); +void ppackTLVWord(PBYTE *buf, size_t *buflen, WORD wType, WORD wValue); +void ppackTLVDWord(PBYTE *buf, size_t *buflen, WORD wType, DWORD dwValue); +void ppackTLVDouble(PBYTE *buf, size_t *buflen, WORD wType, double dValue); +void ppackTLVUID(PBYTE *buf, size_t *buflen, WORD wType, DWORD dwUin, const char *szUid); -void ppackLETLVByte(PBYTE *buf, int *buflen, BYTE byValue, WORD wType, BYTE always); -void ppackLETLVWord(PBYTE *buf, int *buflen, WORD wValue, WORD wType, BYTE always); -void ppackLETLVDWord(PBYTE *buf, int *buflen, DWORD dwValue, WORD wType, BYTE always); -void ppackLETLVLNTS(PBYTE *buf, int *buflen, const char *str, WORD wType, BYTE always); -void ppackLETLVWordLNTS(PBYTE *buf, int *buflen, WORD w, const char *str, WORD wType, BYTE always); -void ppackLETLVLNTSByte(PBYTE *buf, int *buflen, const char *str, BYTE b, WORD wType); +void ppackLETLVByte(PBYTE *buf, size_t *buflen, BYTE byValue, WORD wType, BYTE always); +void ppackLETLVWord(PBYTE *buf, size_t *buflen, WORD wValue, WORD wType, BYTE always); +void ppackLETLVDWord(PBYTE *buf, size_t *buflen, DWORD dwValue, WORD wType, BYTE always); +void ppackLETLVLNTS(PBYTE *buf, size_t *buflen, const char *str, WORD wType, BYTE always); +void ppackLETLVWordLNTS(PBYTE *buf, size_t *buflen, WORD w, const char *str, WORD wType, BYTE always); +void ppackLETLVLNTSByte(PBYTE *buf, size_t *buflen, const char *str, BYTE b, WORD wType); -void ppackTLVBlockItems(PBYTE *buf, int *buflen, WORD wType, int *nItems, PBYTE *pBlock, WORD *wLength, BOOL bSingleItem); -void ppackTLVBlockItem(PBYTE *buf, int *buflen, WORD wType, PBYTE *pItem, WORD *wLength); +void ppackTLVBlockItems(PBYTE *buf, size_t *buflen, WORD wType, int *nItems, PBYTE *pBlock, WORD *wLength, BOOL bSingleItem); +void ppackTLVBlockItem(PBYTE *buf, size_t *buflen, WORD wType, PBYTE *pItem, WORD *wLength); void __fastcall unpackByte(BYTE **pSource, BYTE *byDestination); void __fastcall unpackWord(BYTE **pSource, WORD *wDestination); +void __fastcall unpackWord(BYTE **pSource, size_t *wDestination); void __fastcall unpackDWord(BYTE **pSource, DWORD *dwDestination); void __fastcall unpackQWord(BYTE **pSource, DWORD64 *qwDestination); -void unpackString(BYTE **buf, char *string, WORD len); -void unpackWideString(BYTE **buf, WCHAR *string, WORD len); -void unpackTypedTLV(BYTE *buf, int buflen, WORD type, WORD *ttype, WORD *tlen, BYTE **ttlv); +void unpackString(BYTE **buf, char *string, size_t len); +void unpackWideString(BYTE **buf, WCHAR *string, size_t len); +void unpackTypedTLV(BYTE *buf, size_t buflen, WORD type, WORD *ttype, size_t *tlen, BYTE **ttlv); BOOL unpackUID(BYTE **ppBuf, WORD *pwLen, DWORD *pdwUIN, uid_str *ppszUID); void __fastcall unpackLEWord(BYTE **buf, WORD *w); +void __fastcall unpackLEWord(BYTE **buf, size_t *w); + void __fastcall unpackLEDWord(BYTE **buf, DWORD *dw); +void __fastcall unpackLEDWord(BYTE **buf, size_t *dw); #endif /* __ICQ_PACKET_H */ diff --git a/protocols/IcqOscarJ/src/icq_proto.cpp b/protocols/IcqOscarJ/src/icq_proto.cpp index c24ea8bfcf..2e4f3045de 100644 --- a/protocols/IcqOscarJ/src/icq_proto.cpp +++ b/protocols/IcqOscarJ/src/icq_proto.cpp @@ -366,7 +366,7 @@ MCONTACT __cdecl CIcqProto::AddToListByEvent(int flags, int iContact, HANDLE hDb char *pbOffset = (char*)dbei.pBlob; char *pbEnd = pbOffset + dbei.cbBlob; for (int i = 0; i <= iContact; i++) { - pbOffset += strlennull(pbOffset) + 1; // Nick + pbOffset += mir_strlen(pbOffset) + 1; // Nick if (pbOffset >= pbEnd) break; if (i == iContact) { // we found the contact, get uid if (IsStringUIN((char*)pbOffset)) @@ -376,7 +376,7 @@ MCONTACT __cdecl CIcqProto::AddToListByEvent(int flags, int iContact, HANDLE hDb strcpy(uid, (char*)pbOffset); } } - pbOffset += strlennull(pbOffset) + 1; // Uin + pbOffset += mir_strlen(pbOffset) + 1; // Uin if (pbOffset >= pbEnd) break; } } @@ -395,7 +395,7 @@ MCONTACT __cdecl CIcqProto::AddToListByEvent(int flags, int iContact, HANDLE hDb return AddToListByUIN(uin, flags); // Success // add aim contact - if (strlennull(uid)) + if (mir_strlen(uid)) return AddToListByUID(uid, flags); // Success return NULL; // Failure @@ -768,7 +768,7 @@ void CIcqProto::CheekySearchThread(void*) HANDLE __cdecl CIcqProto::SearchBasic(const PROTOCHAR *pszSearch) { - if (strlennull(pszSearch) == 0) + if (mir_wstrlen(pszSearch) == 0) return 0; char pszUIN[255]; @@ -776,7 +776,7 @@ HANDLE __cdecl CIcqProto::SearchBasic(const PROTOCHAR *pszSearch) int i, j; if (!m_bAimEnabled) { - for (i = j = 0; (i < strlennull(pszSearch)) && (j < 255); i++) { // we take only numbers + for (i = j = 0; (i < mir_wstrlen(pszSearch)) && (j < 255); i++) { // we take only numbers if ((pszSearch[i] >= 0x30) && (pszSearch[i] <= 0x39)) { pszUIN[j] = pszSearch[i]; j++; @@ -784,7 +784,7 @@ HANDLE __cdecl CIcqProto::SearchBasic(const PROTOCHAR *pszSearch) } } else { - for (i = j = 0; (i < strlennull(pszSearch)) && (j < 255); i++) { // we remove spaces and slashes + for (i = j = 0; (i < mir_wstrlen(pszSearch)) && (j < 255); i++) { // we remove spaces and slashes if ((pszSearch[i] != 0x20) && (pszSearch[i] != '-')) { if (pszSearch[i] >= 0x80) continue; pszUIN[j] = pszSearch[i]; @@ -794,7 +794,7 @@ HANDLE __cdecl CIcqProto::SearchBasic(const PROTOCHAR *pszSearch) } pszUIN[j] = 0; - if (strlennull(pszUIN)) { + if (mir_strlen(pszUIN)) { DWORD dwUin; if (IsStringUIN(pszUIN)) dwUin = atoi(pszUIN); @@ -826,7 +826,7 @@ HANDLE __cdecl CIcqProto::SearchBasic(const PROTOCHAR *pszSearch) HANDLE __cdecl CIcqProto::SearchByEmail(const PROTOCHAR *email) { - if (email && icqOnline() && strlennull(email) > 0) { + if (email && icqOnline() && mir_wstrlen(email) > 0) { char *szEmail = tchar_to_ansi(email); // Success @@ -881,7 +881,7 @@ HWND __cdecl CIcqProto::CreateExtendedSearchUI(HWND parent) HWND __cdecl CIcqProto::SearchAdvanced(HWND hwndDlg) { if (icqOnline() && IsWindow(hwndDlg)) { - int nDataLen; + size_t nDataLen; BYTE* bySearchData; if (bySearchData = createAdvancedSearchStructure(hwndDlg, &nDataLen)) { @@ -902,7 +902,7 @@ int __cdecl CIcqProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) { ICQSEARCHRESULT **isrList = (ICQSEARCHRESULT**)pre->szMessage; int i; - DWORD cbBlob = 0; + size_t cbBlob = 0; DWORD flags = 0; if (pre->flags & PREF_UTF || pre->flags & PREF_UNICODE) @@ -912,13 +912,13 @@ int __cdecl CIcqProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) if (pre->flags & PREF_UNICODE) cbBlob += get_utf8_size((WCHAR*)isrList[i]->hdr.nick) + 2; else - cbBlob += strlennull((char*)isrList[i]->hdr.nick) + 2; // both trailing zeros + cbBlob += mir_strlen((char*)isrList[i]->hdr.nick) + 2; // both trailing zeros if (isrList[i]->uin) cbBlob += getUINLen(isrList[i]->uin); else if (pre->flags & PREF_UNICODE) - cbBlob += strlennull((WCHAR*)isrList[i]->hdr.id); + cbBlob += mir_wstrlen((WCHAR*)isrList[i]->hdr.id); else - cbBlob += strlennull((char*)isrList[i]->hdr.id); + cbBlob += mir_strlen((char*)isrList[i]->hdr.id); } PBYTE pBlob = (PBYTE)_alloca(cbBlob), pCurBlob; for (i = 0, pCurBlob = pBlob; i < pre->lParam; i++) { @@ -926,7 +926,7 @@ int __cdecl CIcqProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) make_utf8_string_static((WCHAR*)isrList[i]->hdr.nick, (char*)pCurBlob, cbBlob - (pCurBlob - pBlob)); else strcpy((char*)pCurBlob, (char*)isrList[i]->hdr.nick); - pCurBlob += strlennull((char*)pCurBlob) + 1; + pCurBlob += mir_strlen((char*)pCurBlob) + 1; if (isrList[i]->uin) { char szUin[UINMAXLEN]; _itoa(isrList[i]->uin, szUin, 10); @@ -938,7 +938,7 @@ int __cdecl CIcqProto::RecvContacts(MCONTACT hContact, PROTORECVEVENT* pre) else strcpy((char*)pCurBlob, (char*)isrList[i]->hdr.id); } - pCurBlob += strlennull((char*)pCurBlob) + 1; + pCurBlob += mir_strlen((char*)pCurBlob) + 1; } ICQAddRecvEvent(hContact, EVENTTYPE_CONTACTS, pre, cbBlob, pBlob, flags); @@ -960,15 +960,14 @@ int __cdecl CIcqProto::RecvFile(MCONTACT hContact, PROTORECVFILET* evt) int __cdecl CIcqProto::RecvMsg(MCONTACT hContact, PROTORECVEVENT* pre) { - DWORD cbBlob; DWORD flags = 0; - cbBlob = strlennull(pre->szMessage) + 1; + size_t cbBlob = mir_strlen(pre->szMessage) + 1; // process utf-8 encoded messages - if ((pre->flags & PREF_UTF) && !IsUSASCII(pre->szMessage, strlennull(pre->szMessage))) + if ((pre->flags & PREF_UTF) && !IsUSASCII(pre->szMessage, mir_strlen(pre->szMessage))) flags |= DBEF_UTF; // process unicode ucs-2 messages - if ((pre->flags & PREF_UNICODE) && !IsUnicodeAscii((WCHAR*)(pre->szMessage + cbBlob), strlennull((WCHAR*)(pre->szMessage + cbBlob)))) + if ((pre->flags & PREF_UNICODE) && !IsUnicodeAscii((WCHAR*)(pre->szMessage + cbBlob), mir_wstrlen((WCHAR*)(pre->szMessage + cbBlob)))) cbBlob *= (sizeof(WCHAR)+1); ICQAddRecvEvent(hContact, EVENTTYPE_MESSAGE, pre, cbBlob, (PBYTE)pre->szMessage, flags); @@ -1018,7 +1017,6 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, // OK else { if (CheckContactCapabilities(hContact, CAPF_CONTACTS) && wRecipientStatus != ID_STATUS_OFFLINE) { // Use the new format if possible - int nDataLen, nNamesLen; struct icq_contactsend_s* contacts = NULL; // Format the data part and the names part @@ -1026,114 +1024,110 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, // we need to calculate the length of the packet. contacts = (struct icq_contactsend_s*)_alloca(sizeof(struct icq_contactsend_s)*nContacts); ZeroMemory(contacts, sizeof(struct icq_contactsend_s)*nContacts); - { - nDataLen = 0; nNamesLen = 0; - for (i = 0; i < nContacts; i++) { - uid_str szContactUid; - - if (!IsICQContact(hContactsList[i])) - break; // Abort if a non icq contact is found - if (getContactUid(hContactsList[i], &contacts[i].uin, &szContactUid)) - break; // Abort if invalid contact - contacts[i].uid = contacts[i].uin ? NULL : null_strdup(szContactUid); - contacts[i].szNick = NickFromHandleUtf(hContactsList[i]); - nDataLen += getUIDLen(contacts[i].uin, contacts[i].uid) + 4; - nNamesLen += strlennull(contacts[i].szNick) + 8; - } - - if (i == nContacts) { - debugLogA("Sending contacts to %s.", strUID(dwUin, szUid)); - - // Do not calculate the exact size of the data packet - only the maximal size (easier) - // Sumarize size of group information - // - we do not utilize the full power of the protocol and send all contacts with group "General" - // just like ICQ6 does - nDataLen += 9; - nNamesLen += 9; - - // Create data structures - icq_packet mData, mNames; - mData.wPlace = 0; - mData.pData = (LPBYTE)SAFE_MALLOC(nDataLen); - mData.wLen = nDataLen; - mNames.wPlace = 0; - mNames.pData = (LPBYTE)SAFE_MALLOC(nNamesLen); - - // pack Group Name - packWord(&mData, 7); - packBuffer(&mData, (LPBYTE)"General", 7); - packWord(&mNames, 7); - packBuffer(&mNames, (LPBYTE)"General", 7); - - // all contacts in one group - packWord(&mData, (WORD)nContacts); - packWord(&mNames, (WORD)nContacts); - for (i = 0; i < nContacts; i++) { - uid_str szContactUid; - WORD wLen; - - if (contacts[i].uin) - strUID(contacts[i].uin, szContactUid); - else - strcpy(szContactUid, contacts[i].uid); - - // prepare UID - wLen = strlennull(szContactUid); - packWord(&mData, wLen); - packBuffer(&mData, (LPBYTE)szContactUid, wLen); - // prepare Nick - wLen = strlennull(contacts[i].szNick); - packWord(&mNames, (WORD)(wLen + 4)); - packTLV(&mNames, 0x01, wLen, (LPBYTE)contacts[i].szNick); - } - - // Cleanup temporary list - for (i = 0; i < nContacts; i++) { - SAFE_FREE(&contacts[i].szNick); - SAFE_FREE(&contacts[i].uid); - } + size_t nDataLen = 0, nNamesLen = 0; + for (i = 0; i < nContacts; i++) { + uid_str szContactUid; + + if (!IsICQContact(hContactsList[i])) + break; // Abort if a non icq contact is found + if (getContactUid(hContactsList[i], &contacts[i].uin, &szContactUid)) + break; // Abort if invalid contact + contacts[i].uid = contacts[i].uin ? NULL : null_strdup(szContactUid); + contacts[i].szNick = NickFromHandleUtf(hContactsList[i]); + nDataLen += getUIDLen(contacts[i].uin, contacts[i].uid) + 4; + nNamesLen += mir_strlen(contacts[i].szNick) + 8; + } - // Rate check - if (IsServerOverRate(ICQ_MSG_FAMILY, ICQ_MSG_SRV_SEND, RML_LIMIT)) { // rate is too high, the message will not go thru... - SAFE_FREE((void**)&mData.pData); - SAFE_FREE((void**)&mNames.pData); + if (i == nContacts) { + debugLogA("Sending contacts to %s.", strUID(dwUin, szUid)); + + // Do not calculate the exact size of the data packet - only the maximal size (easier) + // Sumarize size of group information + // - we do not utilize the full power of the protocol and send all contacts with group "General" + // just like ICQ6 does + nDataLen += 9; + nNamesLen += 9; + + // Create data structures + icq_packet mData, mNames; + mData.wPlace = 0; + mData.pData = (LPBYTE)SAFE_MALLOC(nDataLen); + mData.wLen = WORD(nDataLen); + mNames.wPlace = 0; + mNames.pData = (LPBYTE)SAFE_MALLOC(nNamesLen); + + // pack Group Name + packWord(&mData, 7); + packBuffer(&mData, (LPBYTE)"General", 7); + packWord(&mNames, 7); + packBuffer(&mNames, (LPBYTE)"General", 7); + + // all contacts in one group + packWord(&mData, WORD(nContacts)); + packWord(&mNames, WORD(nContacts)); + for (i = 0; i < nContacts; i++) { + uid_str szContactUid; + if (contacts[i].uin) + strUID(contacts[i].uin, szContactUid); + else + strcpy(szContactUid, contacts[i].uid); - return ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "The message could not be delivered. You are sending too fast. Wait a while and try again."); - } + // prepare UID + size_t wLen = mir_strlen(szContactUid); + packWord(&mData, WORD(wLen)); + packBuffer(&mData, (LPBYTE)szContactUid, wLen); - // Set up the ack type - cookie_message_data *pCookieData = CreateMessageCookieData(MTYPE_CONTACTS, hContact, dwUin, FALSE); + // prepare Nick + wLen = mir_strlen(contacts[i].szNick); + packWord(&mNames, WORD(wLen + 4)); + packTLV(&mNames, 0x01, wLen, (LPBYTE)contacts[i].szNick); + } - // AIM clients do not send acknowledgement - if (!dwUin && pCookieData->nAckType == ACKTYPE_CLIENT) - pCookieData->nAckType = ACKTYPE_SERVER; - // Send the message - dwCookie = icq_SendChannel2Contacts(dwUin, szUid, hContact, (char*)mData.pData, mData.wPlace, (char*)mNames.pData, mNames.wPlace, pCookieData); + // Cleanup temporary list + for (i = 0; i < nContacts; i++) { + SAFE_FREE(&contacts[i].szNick); + SAFE_FREE(&contacts[i].uid); + } - // This will stop the message dialog from waiting for the real message delivery ack - if (pCookieData->nAckType == ACKTYPE_NONE) { - SendProtoAck(hContact, dwCookie, ACKRESULT_SUCCESS, ACKTYPE_CONTACTS, NULL); - // We need to free this here since we will never see the real ack - // The actual cookie value will still have to be returned to the message dialog though - ReleaseCookie(dwCookie); - } - // Release our buffers + // Rate check + if (IsServerOverRate(ICQ_MSG_FAMILY, ICQ_MSG_SRV_SEND, RML_LIMIT)) { // rate is too high, the message will not go thru... SAFE_FREE((void**)&mData.pData); SAFE_FREE((void**)&mNames.pData); - } - else { - dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "Bad data (internal error #2)"); + + return ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "The message could not be delivered. You are sending too fast. Wait a while and try again."); } - for (i = 0; i < nContacts; i++) { - SAFE_FREE(&contacts[i].szNick); - SAFE_FREE(&contacts[i].uid); + // Set up the ack type + cookie_message_data *pCookieData = CreateMessageCookieData(MTYPE_CONTACTS, hContact, dwUin, FALSE); + + // AIM clients do not send acknowledgement + if (!dwUin && pCookieData->nAckType == ACKTYPE_CLIENT) + pCookieData->nAckType = ACKTYPE_SERVER; + // Send the message + dwCookie = icq_SendChannel2Contacts(dwUin, szUid, hContact, (char*)mData.pData, mData.wPlace, (char*)mNames.pData, mNames.wPlace, pCookieData); + + // This will stop the message dialog from waiting for the real message delivery ack + if (pCookieData->nAckType == ACKTYPE_NONE) { + SendProtoAck(hContact, dwCookie, ACKRESULT_SUCCESS, ACKTYPE_CONTACTS, NULL); + // We need to free this here since we will never see the real ack + // The actual cookie value will still have to be returned to the message dialog though + ReleaseCookie(dwCookie); } + // Release our buffers + SAFE_FREE((void**)&mData.pData); + SAFE_FREE((void**)&mNames.pData); + } + else { + dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "Bad data (internal error #2)"); + } + + for (i = 0; i < nContacts; i++) { + SAFE_FREE(&contacts[i].szNick); + SAFE_FREE(&contacts[i].uid); } } else if (dwUin) { // old format is only understood by ICQ clients - int nBodyLength; char szContactUin[UINMAXLEN]; char szCount[17]; struct icq_contactsend_s* contacts = NULL; @@ -1146,7 +1140,7 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, contacts = (struct icq_contactsend_s*)_alloca(sizeof(struct icq_contactsend_s)*nContacts); ZeroMemory(contacts, sizeof(struct icq_contactsend_s)*nContacts); { - nBodyLength = 0; + size_t nBodyLength = 0; for (i = 0; i < nContacts; i++) { if (!IsICQContact(hContactsList[i])) break; // Abort if a non icq contact is found @@ -1156,7 +1150,7 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, contacts[i].szNick = NickFromHandle(hContactsList[i]); // Compute this contact's length nBodyLength += getUIDLen(contacts[i].uin, contacts[i].uid) + 1; - nBodyLength += strlennull(contacts[i].szNick) + 1; + nBodyLength += mir_strlen(contacts[i].szNick) + 1; } if (i == nContacts) { @@ -1164,12 +1158,12 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, // Compute count record's length _itoa(nContacts, szCount, 10); - nBodyLength += strlennull(szCount) + 1; + nBodyLength += mir_strlen(szCount) + 1; // Finally we need to copy the contact data into the packet body char *pBody, *pBuffer = pBody = (char *)SAFE_MALLOC(nBodyLength); null_strcpy(pBuffer, szCount, nBodyLength - 1); - pBuffer += strlennull(pBuffer); + pBuffer += mir_strlen(pBuffer); *pBuffer++ = (char)0xFE; for (i = 0; i < nContacts; i++) { if (contacts[i].uin) { @@ -1178,10 +1172,10 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, } else strcpy(pBuffer, contacts[i].uid); - pBuffer += strlennull(pBuffer); + pBuffer += mir_strlen(pBuffer); *pBuffer++ = (char)0xFE; strcpy(pBuffer, contacts[i].szNick); - pBuffer += strlennull(pBuffer); + pBuffer += mir_strlen(pBuffer); *pBuffer++ = (char)0xFE; } @@ -1210,24 +1204,15 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, return ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "The message could not be delivered. You are sending too fast. Wait a while and try again."); } + // Select channel and send - /* - if (!CheckContactCapabilities(hContact, CAPF_SRV_RELAY) || wRecipientStatus == ID_STATUS_OFFLINE) - { - dwCookie = icq_SendChannel4Message(dwUin, hContact, MTYPE_CONTACTS, (WORD)nBodyLength, pBody, pCookieData); - } - else - */ - { - WORD wPriority; - - if (wRecipientStatus == ID_STATUS_ONLINE || wRecipientStatus == ID_STATUS_FREECHAT) - wPriority = 0x0001; - else - wPriority = 0x0021; + WORD wPriority; + if (wRecipientStatus == ID_STATUS_ONLINE || wRecipientStatus == ID_STATUS_FREECHAT) + wPriority = 0x0001; + else + wPriority = 0x0021; - dwCookie = icq_SendChannel2Message(dwUin, hContact, pBody, nBodyLength, wPriority, pCookieData, NULL); - } + dwCookie = icq_SendChannel2Message(dwUin, hContact, pBody, nBodyLength, wPriority, pCookieData, NULL); // This will stop the message dialog from waiting for the real message delivery ack if (pCookieData->nAckType == ACKTYPE_NONE) { @@ -1238,14 +1223,10 @@ int __cdecl CIcqProto::SendContacts(MCONTACT hContact, int flags, int nContacts, } SAFE_FREE((void**)&pBody); } - else { - dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "Bad data (internal error #2)"); - } + else dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "Bad data (internal error #2)"); } } - else { - dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "The reciever does not support receiving of contacts."); - } + else dwCookie = ReportGenericSendError(hContact, ACKTYPE_CONTACTS, "The reciever does not support receiving of contacts."); } return dwCookie; } @@ -1372,7 +1353,7 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) return ReportGenericSendError(hContact, ACKTYPE_MESSAGE, "The receiver has an invalid user ID."); if (flags & PREF_UNICODE) { - puszText = make_utf8_string((WCHAR*)(pszSrc + strlennull(pszSrc) + 1)); // get the UTF-16 part + puszText = make_utf8_string((WCHAR*)(pszSrc + mir_strlen(pszSrc) + 1)); // get the UTF-16 part bNeedFreeU = 1; } else if (flags & PREF_UTF) @@ -1384,7 +1365,7 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) WORD wRecipientStatus = getContactStatus(hContact); - BOOL plain_ascii = IsUSASCII(puszText, strlennull(puszText)); + BOOL plain_ascii = IsUSASCII(puszText, mir_strlen(puszText)); BOOL oldAnsi = plain_ascii || !m_bUtfEnabled || (!(flags & (PREF_UTF | PREF_UNICODE)) && m_bUtfEnabled == 1) || @@ -1397,7 +1378,7 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) // Failure scenarios if (!icqOnline()) dwCookie = ReportGenericSendError(hContact, ACKTYPE_MESSAGE, "You cannot send messages when you are offline."); - else if ((wRecipientStatus == ID_STATUS_OFFLINE) && (strlennull(puszText) > 4096)) + else if ((wRecipientStatus == ID_STATUS_OFFLINE) && (mir_strlen(puszText) > 4096)) dwCookie = ReportGenericSendError(hContact, ACKTYPE_MESSAGE, "Messages to offline contacts must be shorter than 4096 characters."); // Looks OK else { @@ -1420,7 +1401,7 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) // Set up the ack type pCookieData = CreateMessageCookieData(MTYPE_PLAIN, hContact, dwUin, TRUE); pCookieData->nAckType = ACKTYPE_CLIENT; - dwCookie = icq_SendDirectMessage(hContact, dc_msg, strlennull(dc_msg), 1, pCookieData, dc_cap); + dwCookie = icq_SendDirectMessage(hContact, dc_msg, mir_strlen(dc_msg), 1, pCookieData, dc_cap); SAFE_FREE(&szUserAnsi); if (dwCookie) { // free the buffers if alloced @@ -1433,8 +1414,8 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) /// TODO: add support for RTL & user customizable font { - char *mng = MangleXml(puszText, strlennull(puszText)); - int len = strlennull(mng); + char *mng = MangleXml(puszText, mir_strlen(puszText)); + size_t len = mir_strlen(mng); mng = (char*)SAFE_REALLOC(mng, len + 28); memmove(mng + 12, mng, len + 1); memcpy(mng, "", 12); @@ -1445,7 +1426,7 @@ int __cdecl CIcqProto::SendMsg(MCONTACT hContact, int flags, const char* pszSrc) } WCHAR *pwszText = plain_ascii ? NULL : make_unicode_string(puszText); - if ((plain_ascii ? strlennull(puszText) : strlennull(pwszText) * sizeof(WCHAR)) > MAX_MESSAGESNACSIZE) { // max length check // TLV(2) is currently limited to 0xA00 bytes in online mode + if ((plain_ascii ? mir_strlen(puszText) : mir_wstrlen(pwszText) * sizeof(WCHAR)) > MAX_MESSAGESNACSIZE) { // max length check // TLV(2) is currently limited to 0xA00 bytes in online mode // only limit to not get disconnected, all other will be handled by error 0x0A dwCookie = ReportGenericSendError(hContact, ACKTYPE_MESSAGE, "The message could not be delivered, it is too long."); @@ -1514,10 +1495,10 @@ int __cdecl CIcqProto::SendUrl(MCONTACT hContact, int flags, const char* url) cookie_message_data *pCookieData = CreateMessageCookieData(MTYPE_URL, hContact, dwUin, TRUE); // Format the body - int nUrlLen = strlennull(url); + size_t nUrlLen = mir_strlen(url); char *szDesc = (char *)url + nUrlLen + 1; - int nDescLen = strlennull(szDesc); - int nBodyLen = nUrlLen + nDescLen + 2; + size_t nDescLen = mir_strlen(szDesc); + size_t nBodyLen = nUrlLen + nDescLen + 2; char *szBody = (char *)_alloca(nBodyLen); strcpy(szBody, szDesc); szBody[nDescLen] = (char)0xFE; // Separator @@ -1573,7 +1554,7 @@ int __cdecl CIcqProto::SetApparentMode(MCONTACT hContact, int mode) // Don't send redundant updates if (mode != oldMode) { - setWord(hContact, "ApparentMode", (WORD)mode); + setWord(hContact, "ApparentMode", WORD(mode)); // Not being online is only an error when in SS mode. This is not handled // yet so we just ignore this for now. @@ -1786,7 +1767,7 @@ HANDLE __cdecl CIcqProto::GetAwayMsg(MCONTACT hContact) if (!dwUin || !CheckContactCapabilities(hContact, CAPF_STATUS_MESSAGES)) { // No individual status messages, check if the contact has Status Note, if yes give it char *szStatusNote = getSettingStringUtf(hContact, DBSETTING_STATUS_NOTE, NULL); - if (strlennull(szStatusNote) > 0) { // Give Status Note + if (mir_strlen(szStatusNote) > 0) { // Give Status Note status_message_thread_data *pThreadData = (status_message_thread_data*)SAFE_MALLOC(sizeof(status_message_thread_data)); pThreadData->hContact = hContact; @@ -1927,7 +1908,7 @@ INT_PTR CIcqProto::GetMyAwayMsg(WPARAM wParam, LPARAM lParam) if (!ppszMsg || !*ppszMsg) return 0; - int nMsgLen = strlennull(*ppszMsg) + 1; + size_t nMsgLen = mir_strlen(*ppszMsg) + 1; if (lParam & SGMA_UNICODE) { WCHAR *szMsg = (WCHAR*)_alloca(nMsgLen * sizeof(WCHAR)); diff --git a/protocols/IcqOscarJ/src/icq_proto.h b/protocols/IcqOscarJ/src/icq_proto.h index 4f89e303e8..d8cea3ae36 100644 --- a/protocols/IcqOscarJ/src/icq_proto.h +++ b/protocols/IcqOscarJ/src/icq_proto.h @@ -197,26 +197,26 @@ struct CIcqProto : public PROTO void SetCapabilitiesFromBuffer(MCONTACT hContact, BYTE *pBuffer, int nLength, BOOL bReset); //----| chan_01login.cpp |------------------------------------------------------------ - void handleLoginChannel(BYTE *buf, WORD datalen, serverthread_info *info); + void handleLoginChannel(BYTE *buf, size_t datalen, serverthread_info *info); //----| chan_02data.cpp |------------------------------------------------------------- - void handleDataChannel(BYTE *buf, WORD wLen, serverthread_info *info); + void handleDataChannel(BYTE *buf, size_t wLen, serverthread_info *info); void LogFamilyError(WORD wFamily, WORD wError); //----| chan_03error.cpp |------------------------------------------------------------ - void handleErrorChannel(unsigned char *buf, WORD datalen); + void handleErrorChannel(unsigned char *buf, size_t datalen); //----| chan_04close.cpp |------------------------------------------------------------ - void handleCloseChannel(BYTE *buf, WORD datalen, serverthread_info *info); - void handleLoginReply(BYTE *buf, WORD datalen, serverthread_info *info); + void handleCloseChannel(BYTE *buf, size_t datalen, serverthread_info *info); + void handleLoginReply(BYTE *buf, size_t datalen, serverthread_info *info); void handleMigration(serverthread_info *info); void handleSignonError(WORD wError); int connectNewServer(serverthread_info *info); //----| chan_05ping.cpp |------------------------------------------------------------- - void handlePingChannel(BYTE *buf, WORD wLen); + void handlePingChannel(BYTE *buf, size_t wLen); void StartKeepAlive(serverthread_info *info); void StopKeepAlive(serverthread_info *info); @@ -254,76 +254,76 @@ struct CIcqProto : public PROTO void icq_sendFileDenyDirect(MCONTACT hContact, filetransfer *ft, const char *szReason); int icq_sendFileSendDirectv7(filetransfer *ft, const char *pszFiles); int icq_sendFileSendDirectv8(filetransfer *ft, const char *pszFiles); - DWORD icq_SendDirectMessage(MCONTACT hContact, const char *szMessage, int nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap); - void icq_sendXtrazRequestDirect(MCONTACT hContact, DWORD dwCookie, char* szBody, int nBodyLen, WORD wType); - void icq_sendXtrazResponseDirect(MCONTACT hContact, WORD wCookie, char* szBody, int nBodyLen, WORD wType); + DWORD icq_SendDirectMessage(MCONTACT hContact, const char *szMessage, size_t nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap); + void icq_sendXtrazRequestDirect(MCONTACT hContact, DWORD dwCookie, char* szBody, size_t nBodyLen, WORD wType); + void icq_sendXtrazResponseDirect(MCONTACT hContact, WORD wCookie, char* szBody, size_t nBodyLen, WORD wType); //----| fam_01service.cpp |----------------------------------------------------------- - void handleServiceFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info); - char* buildUinList(int subtype, WORD wMaxLen, MCONTACT *hContactResume); + void handleServiceFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info); + char* buildUinList(int subtype, size_t wMaxLen, MCONTACT *hContactResume); void sendEntireListServ(WORD wFamily, WORD wSubtype, int listType); void setUserInfo(void); void handleServUINSettings(int nPort, serverthread_info *info); //----| fam_02location.cpp |---------------------------------------------------------- - void handleLocationFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); - void handleLocationUserInfoReply(BYTE* buf, WORD wLen, DWORD dwCookie); + void handleLocationFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader); + void handleLocationUserInfoReply(BYTE* buf, size_t wLen, DWORD dwCookie); //----| fam_03buddy.cpp |------------------------------------------------------------- - void handleBuddyFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info); - void handleReplyBuddy(BYTE *buf, WORD wPackLen); - void handleUserOffline(BYTE *buf, WORD wPackLen); - void handleUserOnline(BYTE *buf, WORD wPackLen, serverthread_info *info); + void handleBuddyFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info); + void handleReplyBuddy(BYTE *buf, size_t wPackLen); + void handleUserOffline(BYTE *buf, size_t wPackLen); + void handleUserOnline(BYTE *buf, size_t wPackLen, serverthread_info *info); void parseStatusNote(DWORD dwUin, char *szUid, MCONTACT hContact, oscar_tlv_chain *pChain); - void handleNotifyRejected(BYTE *buf, WORD wPackLen); + void handleNotifyRejected(BYTE *buf, size_t wPackLen); //----| fam_04message.cpp |----------------------------------------------------------- icq_mode_messages m_modeMsgs; icq_critical_section *m_modeMsgsMutex; HANDLE m_modeMsgsEvent; - void handleMsgFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader); + void handleMsgFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader); - void handleReplyICBM(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleRecvServMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleRecvServMsgType1(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); - void handleRecvServMsgType2(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); - void handleRecvServMsgType4(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); - void handleRecvServMsgError(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleRecvMsgResponse(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleServerAck(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); + void handleReplyICBM(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleRecvServMsg(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleRecvServMsgType1(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); + void handleRecvServMsgType2(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); + void handleRecvServMsgType4(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwRef); + void handleRecvServMsgError(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleRecvMsgResponse(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleServerAck(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); void handleStatusMsgReply(const char *szPrefix, MCONTACT hContact, DWORD dwUin, WORD wVersion, int bMsgType, WORD wCookie, const char *szMsg, int nMsgFlags); - void handleTypingNotification(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleMissedMsg(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleOffineMessagesReply(BYTE *buf, WORD wLen, WORD wFlags, DWORD dwRef); - void handleRecvServMsgContacts(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand); + void handleTypingNotification(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleMissedMsg(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleOffineMessagesReply(BYTE *buf, size_t wLen, WORD wFlags, DWORD dwRef); + void handleRecvServMsgContacts(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand); void handleRuntimeError(WORD wError); - void parseServRelayData(BYTE *pDataBuf, WORD wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType); - void parseServRelayPluginData(BYTE *pDataBuf, WORD wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType, BYTE bFlags, WORD wStatus, WORD wCookie, WORD wVersion); + void parseServRelayData(BYTE *pDataBuf, size_t wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType); + void parseServRelayPluginData(BYTE *pDataBuf, size_t wLen, MCONTACT hContact, DWORD dwUin, char *szUID, DWORD dwMsgID1, DWORD dwMsgID2, WORD wAckType, BYTE bFlags, WORD wStatus, WORD wCookie, WORD wVersion); - HANDLE handleMessageAck(DWORD dwUin, char *szUID, WORD wCookie, WORD wVersion, int type, WORD wMsgLen, PBYTE buf, BYTE bFlags, int nMsgFlags); - void handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, DWORD dwMsgID, DWORD dwMsgID2, WORD wCookie, WORD wVersion, int type, int flags, WORD wAckType, DWORD dwDataLen, WORD wMsgLen, char *pMsg, int nMsgFlags, message_ack_params *pAckParams); + HANDLE handleMessageAck(DWORD dwUin, char *szUID, WORD wCookie, WORD wVersion, int type, size_t wMsgLen, PBYTE buf, BYTE bFlags, int nMsgFlags); + void handleMessageTypes(DWORD dwUin, char *szUID, DWORD dwTimestamp, DWORD dwMsgID, DWORD dwMsgID2, WORD wCookie, WORD wVersion, int type, int flags, WORD wAckType, size_t dwDataLen, size_t wMsgLen, char *pMsg, int nMsgFlags, message_ack_params *pAckParams); void sendMessageTypesAck(MCONTACT hContact, int bUnicode, message_ack_params *pArgs); void sendTypingNotification(MCONTACT hContact, WORD wMTNCode); - int unpackPluginTypeId(BYTE **pBuffer, WORD *pwLen, int *pTypeId, WORD *pFunctionId, BOOL bThruDC); + int unpackPluginTypeId(BYTE **pBuffer, size_t *pwLen, int *pTypeId, WORD *pFunctionId, BOOL bThruDC); char* convertMsgToUserSpecificUtf(MCONTACT hContact, const char *szMsg); //----| fam_09bos.cpp |--------------------------------------------------------------- - void handleBosFam(unsigned char *pBuffer, WORD wBufferLength, snac_header* pSnacHeader); - void handlePrivacyRightsReply(unsigned char *pBuffer, WORD wBufferLength); + void handleBosFam(unsigned char *pBuffer, size_t wBufferLength, snac_header* pSnacHeader); + void handlePrivacyRightsReply(unsigned char *pBuffer, size_t wBufferLength); void makeContactTemporaryVisible(MCONTACT hContact); //----| fam_0alookup.cpp |------------------------------------------------------------ - void handleLookupFam(unsigned char *pBuffer, WORD wBufferLength, snac_header* pSnacHeader); + void handleLookupFam(unsigned char *pBuffer, size_t wBufferLength, snac_header* pSnacHeader); - void handleLookupEmailReply(BYTE* buf, WORD wLen, DWORD dwCookie); + void handleLookupEmailReply(BYTE* buf, size_t wLen, DWORD dwCookie); void ReleaseLookupCookie(DWORD dwCookie, cookie_search *pCookie); //----| fam_0bstatus.cpp |------------------------------------------------------------ - void handleStatusFam(unsigned char *pBuffer, WORD wBufferLength, snac_header* pSnacHeader); + void handleStatusFam(unsigned char *pBuffer, size_t wBufferLength, snac_header* pSnacHeader); //----| fam_13servclist.cpp |--------------------------------------------------------- BOOL bIsSyncingCL; @@ -332,16 +332,16 @@ struct CIcqProto : public PROTO WORD m_wServerListGroupMaxContacts; WORD m_wServerListRecordNameMaxLength; - void handleServCListFam(BYTE *pBuffer, WORD wBufferLength, snac_header* pSnacHeader, serverthread_info *info); - void handleServerCListRightsReply(BYTE *buf, WORD wLen); + void handleServCListFam(BYTE *pBuffer, size_t wBufferLength, snac_header* pSnacHeader, serverthread_info *info); + void handleServerCListRightsReply(BYTE *buf, size_t wLen); void handleServerCListAck(cookie_servlist_action* sc, WORD wError); - void handleServerCListReply(BYTE *buf, WORD wLen, WORD wFlags, serverthread_info *info); + void handleServerCListReply(BYTE *buf, size_t wLen, WORD wFlags, serverthread_info *info); void handleServerCListItemAdd(const char *szRecordName, WORD wGroupId, WORD wItemId, WORD wItemType, oscar_tlv_chain *pItemData); void handleServerCListItemUpdate(const char *szRecordName, WORD wGroupId, WORD wItemId, WORD wItemType, oscar_tlv_chain *pItemData); void handleServerCListItemDelete(const char *szRecordName, WORD wGroupId, WORD wItemId, WORD wItemType, oscar_tlv_chain *pItemData); - void handleRecvAuthRequest(BYTE *buf, WORD wLen); - void handleRecvAuthResponse(BYTE *buf, WORD wLen); - void handleRecvAdded(BYTE *buf, WORD wLen); + void handleRecvAuthRequest(BYTE *buf, size_t wLen); + void handleRecvAuthResponse(BYTE *buf, size_t wLen); + void handleRecvAdded(BYTE *buf, size_t wLen); MCONTACT HContactFromRecordName(const char *szRecordName, int *bAdded); @@ -357,30 +357,30 @@ struct CIcqProto : public PROTO void updateServVisibilityCode(BYTE bCode); //----| fam_15icqserver.cpp |--------------------------------------------------------- - void handleIcqExtensionsFam(BYTE *pBuffer, WORD wBufferLength, snac_header* pSnacHeader); + void handleIcqExtensionsFam(BYTE *pBuffer, size_t wBufferLength, snac_header* pSnacHeader); - void handleExtensionError(BYTE *buf, WORD wPackLen); - void handleExtensionServerInfo(BYTE *buf, WORD wPackLen, WORD wFlags); - void handleExtensionMetaResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wFlags); + void handleExtensionError(BYTE *buf, size_t wPackLen); + void handleExtensionServerInfo(BYTE *buf, size_t wPackLen, WORD wFlags); + void handleExtensionMetaResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wFlags); int parseUserInfoRecord(MCONTACT hContact, oscar_tlv *pData, UserInfoRecordItem pRecordDef[], int nRecordDef, int nMaxRecords); - void handleDirectoryQueryResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, WORD wFlags); - void handleDirectoryUpdateResponse(BYTE *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype); + void handleDirectoryQueryResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, WORD wFlags); + void handleDirectoryUpdateResponse(BYTE *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype); void parseDirectoryUserDetailsData(MCONTACT hContact, oscar_tlv_chain *cDetails, DWORD dwCookie, cookie_directory_data *pCookieData, WORD wReplySubType); void parseDirectorySearchData(oscar_tlv_chain *cDetails, DWORD dwCookie, cookie_directory_data *pCookieData, WORD wReplySubType); - void parseSearchReplies(unsigned char *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode); - void parseUserInfoUpdateAck(unsigned char *databuf, WORD wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode); + void parseSearchReplies(unsigned char *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode); + void parseUserInfoUpdateAck(unsigned char *databuf, size_t wPacketLen, WORD wCookie, WORD wReplySubtype, BYTE bResultCode); void ReleaseSearchCookie(DWORD dwCookie, cookie_search *pCookie); //----| fam_17signon.cpp |------------------------------------------------------------ - void handleAuthorizationFam(BYTE *pBuffer, WORD wBufferLength, snac_header *pSnacHeader, serverthread_info *info); - void handleAuthKeyResponse(BYTE *buf, WORD wPacketLen, serverthread_info *info); + void handleAuthorizationFam(BYTE *pBuffer, size_t wBufferLength, snac_header *pSnacHeader, serverthread_info *info); + void handleAuthKeyResponse(BYTE *buf, size_t wPacketLen, serverthread_info *info); - void sendClientAuth(const char *szKey, WORD wKeyLen, BOOL bSecure); + void sendClientAuth(const char *szKey, size_t wKeyLen, BOOL bSecure); //----| icq_avatars.cpp |------------------------------------------------------------- icq_critical_section *m_avatarsMutex; @@ -405,14 +405,14 @@ struct CIcqProto : public PROTO int GetAvatarData(MCONTACT hContact, DWORD dwUin, const char *szUid, const BYTE *hash, unsigned int hashlen, const TCHAR *file); int SetAvatarData(MCONTACT hContact, WORD wRef, const BYTE *data, unsigned int datalen); - void StartAvatarThread(HANDLE hConn, char* cookie, WORD cookieLen); + void StartAvatarThread(HANDLE hConn, char* cookie, size_t cookieLen); void StopAvatarThread(); //----| icq_clients.cpp |------------------------------------------------------------- - const char* detectUserClient(MCONTACT hContact, int nIsICQ, WORD wUserClass, DWORD dwOnlineSince, const char *szCurrentClient, WORD wVersion, DWORD dwFT1, DWORD dwFT2, DWORD dwFT3, BYTE bDirectFlag, DWORD dwDirectCookie, DWORD dwWebPort, BYTE *caps, WORD wLen, BYTE *bClientId, char *szClientBuf); + const char* detectUserClient(MCONTACT hContact, int nIsICQ, WORD wUserClass, DWORD dwOnlineSince, const char *szCurrentClient, WORD wVersion, DWORD dwFT1, DWORD dwFT2, DWORD dwFT3, BYTE bDirectFlag, DWORD dwDirectCookie, DWORD dwWebPort, BYTE *caps, size_t wLen, BYTE *bClientId, char *szClientBuf); //----| icq_db.cpp |------------------------------------------------------------------ - HANDLE AddEvent(MCONTACT hContact, WORD wType, DWORD dwTime, DWORD flags, DWORD cbBlob, PBYTE pBlob); + HANDLE AddEvent(MCONTACT hContact, WORD wType, DWORD dwTime, DWORD flags, size_t cbBlob, PBYTE pBlob); int IsICQContact(MCONTACT hContact); int getSetting(MCONTACT hContact, const char *szSetting, DBVARIANT *dbv); @@ -439,7 +439,7 @@ struct CIcqProto : public PROTO void __cdecl icq_directThread(struct directthreadstartinfo* dtsi); - void handleDirectPacket(directconnect* dc, PBYTE buf, WORD wLen); + void handleDirectPacket(directconnect* dc, PBYTE buf, size_t wLen); void sendPeerInit_v78(directconnect* dc); void sendPeerInitAck(directconnect* dc); void sendPeerMsgInit(directconnect* dc, DWORD dwSeq); @@ -455,15 +455,15 @@ struct CIcqProto : public PROTO int SendDirectMessage(MCONTACT hContact, icq_packet *pkt); //----| icq_directmsg.cpp |----------------------------------------------------------- - void handleDirectMessage(directconnect* dc, PBYTE buf, WORD wLen); - void handleDirectGreetingMessage(directconnect* dc, PBYTE buf, WORD wLen, WORD wCommand, WORD wCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wStatus, WORD wFlags, char* pszText); + void handleDirectMessage(directconnect* dc, PBYTE buf, size_t wLen); + void handleDirectGreetingMessage(directconnect* dc, PBYTE buf, size_t wLen, WORD wCommand, WORD wCookie, BYTE bMsgType, BYTE bMsgFlags, WORD wStatus, WORD wFlags, char* pszText); //----| icq_filerequests.cpp |-------------------------------------------------------- filetransfer* CreateFileTransfer(MCONTACT hContact, DWORD dwUin, int nVersion); - void handleFileAck(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCookie, WORD wStatus, char* pszText); - void handleFileRequest(PBYTE buf, WORD wLen, DWORD dwUin, DWORD dwCookie, DWORD dwID1, DWORD dwID2, char* pszDescription, int nVersion, BOOL bDC); - void handleDirectCancel(directconnect *dc, PBYTE buf, WORD wLen, WORD wCommand, DWORD dwCookie, WORD wMessageType, WORD wStatus, WORD wFlags, char* pszText); + void handleFileAck(PBYTE buf, size_t wLen, DWORD dwUin, DWORD dwCookie, WORD wStatus, char* pszText); + void handleFileRequest(PBYTE buf, size_t wLen, DWORD dwUin, DWORD dwCookie, DWORD dwID1, DWORD dwID2, char* pszDescription, int nVersion, BOOL bDC); + void handleDirectCancel(directconnect *dc, PBYTE buf, size_t wLen, WORD wCommand, DWORD dwCookie, WORD wMessageType, WORD wStatus, WORD wFlags, char* pszText); void icq_CancelFileTransfer(MCONTACT hContact, filetransfer* ft); @@ -472,7 +472,7 @@ struct CIcqProto : public PROTO void icq_sendFileResume(filetransfer *ft, int action, const char *szFilename); void icq_InitFileSend(filetransfer *ft); - void handleFileTransferPacket(directconnect *dc, PBYTE buf, WORD wLen); + void handleFileTransferPacket(directconnect *dc, PBYTE buf, size_t wLen); void handleFileTransferIdle(directconnect *dc); //----| icq_infoupdate.cpp |---------------------------------------------------------- @@ -505,18 +505,18 @@ struct CIcqProto : public PROTO void icq_LogFatalParam(const char *szMsg, WORD wError); //----| icq_packet.cpp |-------------------------------------------------------------- - void ppackLETLVLNTSfromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType); - void ppackLETLVWordLNTSfromDB(PBYTE *buf, int *buflen, WORD w, const char *szSetting, WORD wType); - void ppackLETLVLNTSBytefromDB(PBYTE *buf, int *buflen, const char *szSetting, BYTE b, WORD wType); + void ppackLETLVLNTSfromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType); + void ppackLETLVWordLNTSfromDB(PBYTE *buf, size_t *buflen, WORD w, const char *szSetting, WORD wType); + void ppackLETLVLNTSBytefromDB(PBYTE *buf, size_t *buflen, const char *szSetting, BYTE b, WORD wType); - void ppackTLVStringFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType); - void ppackTLVStringUtfFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wType); - void ppackTLVDateFromDB(PBYTE *buf, int *buflen, const char *szSettingYear, const char *szSettingMonth, const char *szSettingDay, WORD wType); + void ppackTLVStringFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType); + void ppackTLVStringUtfFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wType); + void ppackTLVDateFromDB(PBYTE *buf, size_t *buflen, const char *szSettingYear, const char *szSettingMonth, const char *szSettingDay, WORD wType); - int ppackTLVWordStringItemFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID); - int ppackTLVWordStringUtfItemFromDB(PBYTE *buf, int *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID); + int ppackTLVWordStringItemFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID); + int ppackTLVWordStringUtfItemFromDB(PBYTE *buf, size_t *buflen, const char *szSetting, WORD wTypeID, WORD wTypeData, WORD wID); - BOOL unpackUID(BYTE **ppBuf, WORD *pwLen, DWORD *pdwUIN, uid_str *ppszUID); + BOOL unpackUID(BYTE **ppBuf, size_t *pwLen, DWORD *pdwUIN, uid_str *ppszUID); //----| icq_popups.cpp |-------------------------------------------------------------- int ShowPopupMsg(MCONTACT hContact, const char *szTitle, const char *szMsg, BYTE bType); @@ -670,7 +670,7 @@ struct CIcqProto : public PROTO int getCListGroupExists(const char *szGroup); int moveContactToCListGroup(MCONTACT hContact, const char *szGroup); /// TODO: this should be DB function - DWORD icq_sendServerItem(DWORD dwCookie, WORD wAction, WORD wGroupId, WORD wItemId, const char *szName, BYTE *pTLVs, int nTlvLength, WORD wItemType, DWORD dwOperation, DWORD dwTimeout, void **doubleObject); + DWORD icq_sendServerItem(DWORD dwCookie, WORD wAction, WORD wGroupId, WORD wItemId, const char *szName, BYTE *pTLVs, size_t nTlvLength, WORD wItemType, DWORD dwOperation, DWORD dwTimeout, void **doubleObject); DWORD icq_sendServerContact(MCONTACT hContact, DWORD dwCookie, WORD wAction, WORD wGroupId, WORD wContactId, DWORD dwOperation, DWORD dwTimeout, void **doubleObject); DWORD icq_sendSimpleItem(DWORD dwCookie, WORD wAction, DWORD dwUin, char* szUID, WORD wGroupId, WORD wItemId, WORD wItemType, DWORD dwOperation, DWORD dwTimeout); DWORD icq_sendServerGroup(DWORD dwCookie, WORD wAction, WORD wGroupId, const char *szName, void *pContent, int cbContent, DWORD dwOperationFlags); @@ -686,7 +686,7 @@ struct CIcqProto : public PROTO //----| stdpackets.cpp |---------------------------------------------------------- void icq_sendCloseConnection(); - void icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandler)(HANDLE hConn, char* cookie, WORD cookieLen)); + void icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandler)(HANDLE hConn, char* cookie, size_t cookieLen)); void icq_setidle(int bAllow); void icq_setstatus(WORD wStatus, const char *szStatusNote = NULL); @@ -706,9 +706,9 @@ struct CIcqProto : public PROTO void icq_sendFileDenyServ(DWORD dwUin, filetransfer *ft, const char *szReason, int nAckType); - DWORD icq_sendAdvancedSearchServ(BYTE *fieldsBuffer,int bufferLen); + DWORD icq_sendAdvancedSearchServ(BYTE *fieldsBuffer, size_t bufferLen); DWORD icq_changeUserPasswordServ(const char *szPassword); - DWORD icq_changeUserDirectoryInfoServ(const BYTE *pData, WORD wDataLen, BYTE bRequestType); + DWORD icq_changeUserDirectoryInfoServ(const BYTE *pData, size_t wDataLen, BYTE bRequestType); void icq_sendGenericContact(DWORD dwUin, const char *szUid, WORD wFamily, WORD wSubType); void icq_sendNewContact(DWORD dwUin, const char *szUid); void icq_sendRemoveContact(DWORD dwUin, const char *szUid); @@ -725,16 +725,16 @@ struct CIcqProto : public PROTO void icq_sendAuthResponseServ(DWORD dwUin, char* szUid,int auth,const TCHAR *szReason); void icq_sendYouWereAddedServ(DWORD,DWORD); - DWORD sendDirectorySearchPacket(const BYTE *pSearchData, WORD wDataLen, WORD wPage, BOOL bOnlineUsersOnly); - DWORD sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSearchType, WORD wInfoLen, BOOL bOnlineUsersOnly); + DWORD sendDirectorySearchPacket(const BYTE *pSearchData, size_t wDataLen, WORD wPage, BOOL bOnlineUsersOnly); + DWORD sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSearchType, size_t wInfoLen, BOOL bOnlineUsersOnly); void sendOwnerInfoRequest(void); - DWORD sendUserInfoMultiRequest(BYTE *pRequestData, WORD wDataLen, int nItems); + DWORD sendUserInfoMultiRequest(BYTE *pRequestData, size_t dataLen, int nItems); DWORD icq_SendChannel1Message(DWORD dwUin, char *szUID, MCONTACT hContact, char *pszText, cookie_message_data *pCookieData); DWORD icq_SendChannel1MessageW(DWORD dwUin, char *szUID, MCONTACT hContact, WCHAR *pszText, cookie_message_data *pCookieData); // UTF-16 - DWORD icq_SendChannel2Message(DWORD dwUin, MCONTACT hContact, const char *szMessage, int nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap); - DWORD icq_SendChannel2Contacts(DWORD dwUin, char *szUid, MCONTACT hContact, const char *pData, WORD wDataLen, const char *pNames, WORD wNamesLen, cookie_message_data *pCookieData); - DWORD icq_SendChannel4Message(DWORD dwUin, MCONTACT hContact, BYTE bMsgType, WORD wMsgLen, const char *szMsg, cookie_message_data *pCookieData); + DWORD icq_SendChannel2Message(DWORD dwUin, MCONTACT hContact, const char *szMessage, size_t nBodyLength, WORD wPriority, cookie_message_data *pCookieData, char *szCap); + DWORD icq_SendChannel2Contacts(DWORD dwUin, char *szUid, MCONTACT hContact, const char *pData, size_t wDataLen, const char *pNames, size_t wNamesLen, cookie_message_data *pCookieData); + DWORD icq_SendChannel4Message(DWORD dwUin, MCONTACT hContact, BYTE bMsgType, size_t wMsgLen, const char *szMsg, cookie_message_data *pCookieData); void icq_sendAdvancedMsgAck(DWORD, DWORD, DWORD, WORD, BYTE, BYTE); void icq_sendContactsAck(DWORD dwUin, char *szUid, DWORD dwMsgID1, DWORD dwMsgID2); @@ -742,8 +742,8 @@ struct CIcqProto : public PROTO void icq_sendReverseReq(directconnect *dc, DWORD dwCookie, cookie_message_data *pCookie); void icq_sendReverseFailed(directconnect* dc, DWORD dwMsgID1, DWORD dwMsgID2, DWORD dwCookie); - void icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBody, int nBodyLen, cookie_message_data *pCookieData); - void icq_sendXtrazResponseServ(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szBody, int nBodyLen, int nType); + void icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBody, size_t nBodyLen, cookie_message_data *pCookieData); + void icq_sendXtrazResponseServ(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szBody, size_t nBodyLen, int nType); DWORD SearchByUin(DWORD dwUin); DWORD SearchByNames(const char *pszNick, const char *pszFirstName, const char *pszLastName, WORD wPage); @@ -762,7 +762,7 @@ struct CIcqProto : public PROTO MCONTACT AddToListByUIN(DWORD dwUin, DWORD dwFlags); MCONTACT AddToListByUID(const char *szUID, DWORD dwFlags); - void ICQAddRecvEvent(MCONTACT hContact, WORD wType, PROTORECVEVENT* pre, DWORD cbBlob, PBYTE pBlob, DWORD flags); + void ICQAddRecvEvent(MCONTACT hContact, WORD wType, PROTORECVEVENT* pre, size_t cbBlob, PBYTE pBlob, DWORD flags); INT_PTR __cdecl IcqAddCapability(WPARAM wParam, LPARAM lParam); INT_PTR __cdecl IcqCheckCapability(WPARAM wParam, LPARAM lParam); @@ -790,14 +790,14 @@ struct CIcqProto : public PROTO void updateServerCustomStatus(int fullUpdate); //----| icq_xtraz.cpp |--------------------------------------------------------------- - void handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC); - void handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD wCookie, char* szMsg, int nMsgLen); + void handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC); + void handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD wCookie, char* szMsg, size_t nMsgLen); - void handleXtrazInvitation(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC); - void handleXtrazData(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC); + void handleXtrazInvitation(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC); + void handleXtrazData(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC); DWORD SendXtrazNotifyRequest(MCONTACT hContact, char* szQuery, char* szNotify, int bForced); - void SendXtrazNotifyResponse(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szResponse, int nResponseLen, BOOL bThruDC); + void SendXtrazNotifyResponse(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szResponse, size_t nResponseLen, BOOL bThruDC); //----| init.cpp |-------------------------------------------------------------------- void UpdateGlobalSettings(); @@ -827,8 +827,8 @@ struct CIcqProto : public PROTO int IsValidFileTransfer(void *ft); int IsValidOscarTransfer(void *ft); - void handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand); - void handleRecvServResponseOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, void* ft); + void handleRecvServMsgOFT(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand); + void handleRecvServResponseOFT(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, void* ft); HANDLE oftInitTransfer(MCONTACT hContact, DWORD dwUin, char *szUid, const TCHAR **pszFiles, const TCHAR *szDescription); HANDLE oftFileAllow(MCONTACT hContact, HANDLE hTransfer, const TCHAR *szPath); @@ -837,7 +837,7 @@ struct CIcqProto : public PROTO void oftFileResume(oscar_filetransfer *ft, int action, const TCHAR *szFilename); void sendOscarPacket(oscar_connection *oc, icq_packet *packet); - void handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE *pBuffer, WORD wLen); + void handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE *pBuffer, size_t wLen); void sendOFT2FramePacket(oscar_connection *oc, WORD datatype); void proxy_sendInitTunnel(oscar_connection *oc); @@ -883,7 +883,7 @@ struct CIcqProto : public PROTO void AddToSpammerList(DWORD dwUIN); BOOL IsOnSpammerList(DWORD dwUIN); - HANDLE NetLib_BindPort(NETLIBNEWCONNECTIONPROC_V2 pFunc, void* lParam, WORD* pwPort, DWORD* pdwIntIP); + HANDLE NetLib_BindPort(NETLIBNEWCONNECTIONPROC_V2 pFunc, void* lParam, WORD *pwPort, DWORD *pdwIntIP); MCONTACT HandleFromCacheByUid(DWORD dwUin, const char *szUid); MCONTACT HContactFromUIN(DWORD dwUin, int *Added); @@ -901,12 +901,6 @@ struct CIcqProto : public PROTO int SetStatusNote(const char *szStatusNote, DWORD dwDelay, int bForced); int SetStatusMood(const char *szMoodData, DWORD dwDelay); - BOOL writeDbInfoSettingString(MCONTACT hContact, const char* szSetting, char** buf, WORD* pwLength); - BOOL writeDbInfoSettingWord(MCONTACT hContact, const char *szSetting, char **buf, WORD* pwLength); - BOOL writeDbInfoSettingWordWithTable(MCONTACT hContact, const char *szSetting, const FieldNamesItem *table, char **buf, WORD* pwLength); - BOOL writeDbInfoSettingByte(MCONTACT hContact, const char *pszSetting, char **buf, WORD* pwLength); - BOOL writeDbInfoSettingByteWithTable(MCONTACT hContact, const char *szSetting, const FieldNamesItem *table, char **buf, WORD* pwLength); - void writeDbInfoSettingTLVStringUtf(MCONTACT hContact, const char *szSetting, oscar_tlv_chain *chain, WORD wTlv); void writeDbInfoSettingTLVWord(MCONTACT hContact, const char *szSetting, oscar_tlv_chain *chain, WORD wTlv); void writeDbInfoSettingTLVByte(MCONTACT hContact, const char *szSetting, oscar_tlv_chain *chain, WORD wTlv); diff --git a/protocols/IcqOscarJ/src/icq_rates.cpp b/protocols/IcqOscarJ/src/icq_rates.cpp index 9ea1e9c70c..5c2f857bbd 100644 --- a/protocols/IcqOscarJ/src/icq_rates.cpp +++ b/protocols/IcqOscarJ/src/icq_rates.cpp @@ -33,7 +33,7 @@ // Rate Level 1 Management ///////////////////////////// -rates::rates(CIcqProto *ppro, BYTE *pBuffer, WORD wLen) +rates::rates(CIcqProto *ppro, BYTE *pBuffer, size_t wLen) { nGroups = 0; memset(&groups, 0, MAX_RATES_GROUP_COUNT * sizeof(rates_group)); @@ -223,7 +223,7 @@ int rates::getLimitLevel(WORD wGroup, int nLevel) void rates::initAckPacket(icq_packet *pPacket) { - serverPacketInit(pPacket, 10 + WORD(nGroups * sizeof(WORD))); + serverPacketInit(pPacket, 10 + nGroups * sizeof(WORD)); packFNACHeader(pPacket, ICQ_SERVICE_FAMILY, ICQ_CLIENT_RATE_ACK); for (WORD wGroup = 1; wGroup <= nGroups; wGroup++) packWord(pPacket, wGroup); diff --git a/protocols/IcqOscarJ/src/icq_rates.h b/protocols/IcqOscarJ/src/icq_rates.h index b314b9f803..e8445fb44b 100644 --- a/protocols/IcqOscarJ/src/icq_rates.h +++ b/protocols/IcqOscarJ/src/icq_rates.h @@ -56,7 +56,7 @@ private: rates_group *getGroup(WORD wGroup); public: - rates(CIcqProto *ppro, BYTE *pBuffer, WORD wLen); + rates(CIcqProto *ppro, BYTE *pBuffer, size_t wLen); ~rates(); WORD getGroupFromSNAC(WORD wFamily, WORD wCommand); diff --git a/protocols/IcqOscarJ/src/icq_server.cpp b/protocols/IcqOscarJ/src/icq_server.cpp index 3f7e5166e1..94356f5602 100644 --- a/protocols/IcqOscarJ/src/icq_server.cpp +++ b/protocols/IcqOscarJ/src/icq_server.cpp @@ -388,8 +388,9 @@ void CIcqProto::icq_login(const char* szPassword) stsi->nloc.wPort = RandRange(1024, 65535); // User password - stsi->wPassLen = strlennull(szPassword); - if (stsi->wPassLen > 8) stsi->wPassLen = 8; + stsi->wPassLen = mir_strlen(szPassword); + if (stsi->wPassLen > 8) + stsi->wPassLen = 8; null_strcpy(stsi->szPass, szPassword, stsi->wPassLen); // Randomize sequence diff --git a/protocols/IcqOscarJ/src/icq_server.h b/protocols/IcqOscarJ/src/icq_server.h index 99b545b14e..c3b18d3b8c 100644 --- a/protocols/IcqOscarJ/src/icq_server.h +++ b/protocols/IcqOscarJ/src/icq_server.h @@ -33,14 +33,14 @@ struct serverthread_start_info { NETLIBOPENCONNECTION nloc; - WORD wPassLen; + size_t wPassLen; char szPass[128]; }; struct serverthread_info { BYTE szAuthKey[20]; - WORD wAuthKeyLen; + size_t wAuthKeyLen; WORD wServerPort; char *newServer; BYTE *cookieData; diff --git a/protocols/IcqOscarJ/src/icq_servlist.cpp b/protocols/IcqOscarJ/src/icq_servlist.cpp index 233c0d07d8..93bf040dee 100644 --- a/protocols/IcqOscarJ/src/icq_servlist.cpp +++ b/protocols/IcqOscarJ/src/icq_servlist.cpp @@ -178,10 +178,10 @@ void __cdecl CIcqProto::servlistQueueThread(void *param) // allocate cookie id dwGroupCookie = AllocateCookie(CKT_SERVERLIST, wItemAction, 0, pGroupCookie); // prepare packet data - serverPacketInit(&groupPacket, (WORD)(totalSize + 0x0A)); // FLAP size added inside + serverPacketInit(&groupPacket, totalSize + 0x0A); // FLAP size added inside packFNACHeader(&groupPacket, ICQ_LISTS_FAMILY, wItemAction, 0, dwGroupCookie); for (i = 0; i < pItem->nItems; i++) - packBuffer(&groupPacket, pItem->pItems[i]->packet.pData + 0x10, (WORD)(pItem->pItems[i]->packet.wLen - 0x10)); + packBuffer(&groupPacket, pItem->pItems[i]->packet.pData + 0x10, pItem->pItems[i]->packet.wLen - 0x10); if (bItemDouble) { // prepare second packet wItemAction = ((servlistgroupitemdouble*)(pItem->pItems[0]))->wAction2; @@ -199,10 +199,10 @@ void __cdecl CIcqProto::servlistQueueThread(void *param) // allocate cookie id dwGroupCookie = AllocateCookie(CKT_SERVERLIST, wItemAction, 0, pGroupCookie); // prepare packet data - serverPacketInit(&groupPacket2, (WORD)(totalSize + 0x0A)); // FLAP size added inside + serverPacketInit(&groupPacket2, totalSize + 0x0A); // FLAP size added inside packFNACHeader(&groupPacket2, ICQ_LISTS_FAMILY, wItemAction, 0, dwGroupCookie); for (i = 0; i < pItem->nItems; i++) - packBuffer(&groupPacket2, ((servlistgroupitemdouble*)(pItem->pItems[i]))->packet2.pData + 0x10, (WORD)(((servlistgroupitemdouble*)(pItem->pItems[i]))->packet2.wLen - 0x10)); + packBuffer(&groupPacket2, ((servlistgroupitemdouble*)(pItem->pItems[i]))->packet2.pData + 0x10, ((servlistgroupitemdouble*)(pItem->pItems[i]))->packet2.wLen - 0x10); } } else { // just send the one packet, do not create action group @@ -815,7 +815,7 @@ struct GroupReserveIdsEnumParam static int GroupReserveIdsEnumProc(const char *szSetting, LPARAM lParam) { - if (szSetting && strlennull(szSetting) < 5) { + if (szSetting && mir_strlen(szSetting) < 5) { // it is probably server group GroupReserveIdsEnumParam *param = (GroupReserveIdsEnumParam*)lParam; char val[MAX_PATH + 2]; // dummy @@ -914,7 +914,7 @@ void CIcqProto::LoadServerIDs() void CIcqProto::StoreServerIDs() /// TODO: allow delayed { BYTE *pUnhandled = NULL; - int cbUnhandled = 0; + size_t cbUnhandled = 0; servlistMutex->Enter(); if (pdwServerIDList) @@ -928,7 +928,7 @@ void CIcqProto::StoreServerIDs() /// TODO: allow delayed servlistMutex->Leave(); if (pUnhandled) - setSettingBlob(NULL, DBSETTING_SERVLIST_UNHANDLED, pUnhandled, cbUnhandled); + setSettingBlob(NULL, DBSETTING_SERVLIST_UNHANDLED, pUnhandled, (int)cbUnhandled); else delSetting(DBSETTING_SERVLIST_UNHANDLED); @@ -966,28 +966,24 @@ struct doubleServerItemObject icq_packet packet; }; -DWORD CIcqProto::icq_sendServerItem(DWORD dwCookie, WORD wAction, WORD wGroupId, WORD wItemId, const char *szName, BYTE *pTLVs, int nTlvLength, WORD wItemType, DWORD dwOperation, DWORD dwTimeout, void **doubleObject) +DWORD CIcqProto::icq_sendServerItem(DWORD dwCookie, WORD wAction, WORD wGroupId, WORD wItemId, const char *szName, BYTE *pTLVs, size_t nTlvLength, WORD wItemType, DWORD dwOperation, DWORD dwTimeout, void **doubleObject) { - // generic packet - icq_packet packet; - int nNameLen; - WORD wTLVlen = (WORD)nTlvLength; - // Prepare item name length - nNameLen = strlennull(szName); + size_t nNameLen = mir_strlen(szName); // Build the packet - serverPacketInit(&packet, (WORD)(nNameLen + 20 + wTLVlen)); + icq_packet packet; + serverPacketInit(&packet, nNameLen + 20 + nTlvLength); packFNACHeader(&packet, ICQ_LISTS_FAMILY, wAction, 0, dwCookie); - packWord(&packet, (WORD)nNameLen); + packWord(&packet, WORD(nNameLen)); if (nNameLen) - packBuffer(&packet, (LPBYTE)szName, (WORD)nNameLen); + packBuffer(&packet, (LPBYTE)szName, nNameLen); packWord(&packet, wGroupId); packWord(&packet, wItemId); packWord(&packet, wItemType); - packWord(&packet, wTLVlen); - if (wTLVlen) - packBuffer(&packet, pTLVs, wTLVlen); + packWord(&packet, WORD(nTlvLength)); + if (nTlvLength) + packBuffer(&packet, pTLVs, nTlvLength); if (!doubleObject) // Send the packet and return the cookie servlistPostPacket(&packet, dwCookie, dwOperation | wAction, dwTimeout); @@ -1024,8 +1020,7 @@ DWORD CIcqProto::icq_sendServerContact(MCONTACT hContact, DWORD dwCookie, WORD w icq_packet pBuffer; char *szNick = NULL, *szNote = NULL; BYTE *pData = NULL, *pMetaToken = NULL, *pMetaTime = NULL; - int nNickLen, nNoteLen, nDataLen = 0, nMetaTokenLen = 0, nMetaTimeLen = 0; - WORD wTLVlen; + int nDataLen = 0, nMetaTokenLen = 0, nMetaTimeLen = 0; BYTE bAuth; int bDataTooLong = FALSE; @@ -1065,8 +1060,8 @@ DWORD CIcqProto::icq_sendServerContact(MCONTACT hContact, DWORD dwCookie, WORD w db_free(&dbv); } - nNickLen = strlennull(szNick); - nNoteLen = strlennull(szNote); + size_t nNickLen = mir_strlen(szNick); + size_t nNoteLen = mir_strlen(szNote); // Limit the strings if (nNickLen > MAX_SSI_TLV_NAME_SIZE) { @@ -1084,27 +1079,27 @@ DWORD CIcqProto::icq_sendServerContact(MCONTACT hContact, DWORD dwCookie, WORD w } // Build the packet - wTLVlen = (nNickLen ? 4 + nNickLen : 0) + (nNoteLen ? 4 + nNoteLen : 0) + (bAuth ? 4 : 0) + nDataLen + (nMetaTokenLen ? 4 + nMetaTokenLen : 0) + (nMetaTimeLen ? 4 + nMetaTimeLen : 0); + size_t wTLVlen = (nNickLen ? 4 + nNickLen : 0) + (nNoteLen ? 4 + nNoteLen : 0) + (bAuth ? 4 : 0) + nDataLen + (nMetaTokenLen ? 4 + nMetaTokenLen : 0) + (nMetaTimeLen ? 4 + nMetaTimeLen : 0); // Initialize our handy data buffer pBuffer.wPlace = 0; pBuffer.pData = (BYTE *)_alloca(wTLVlen); - pBuffer.wLen = wTLVlen; + pBuffer.wLen = (WORD)wTLVlen; if (nNickLen) - packTLV(&pBuffer, SSI_TLV_NAME, (WORD)nNickLen, (LPBYTE)szNick); // Nickname TLV + packTLV(&pBuffer, SSI_TLV_NAME, nNickLen, (LPBYTE)szNick); // Nickname TLV if (nNoteLen) - packTLV(&pBuffer, SSI_TLV_COMMENT, (WORD)nNoteLen, (LPBYTE)szNote); // Comment TLV + packTLV(&pBuffer, SSI_TLV_COMMENT, nNoteLen, (LPBYTE)szNote); // Comment TLV if (nMetaTokenLen) - packTLV(&pBuffer, SSI_TLV_METAINFO_TOKEN, (WORD)nMetaTokenLen, pMetaToken); + packTLV(&pBuffer, SSI_TLV_METAINFO_TOKEN, nMetaTokenLen, pMetaToken); if (nMetaTimeLen) - packTLV(&pBuffer, SSI_TLV_METAINFO_TIME, (WORD)nMetaTimeLen, pMetaTime); + packTLV(&pBuffer, SSI_TLV_METAINFO_TIME, nMetaTimeLen, pMetaTime); if (pData) - packBuffer(&pBuffer, pData, (WORD)nDataLen); + packBuffer(&pBuffer, pData, nDataLen); if (bAuth) // icq5 gives this as last TLV packDWord(&pBuffer, 0x00660000); // "Still waiting for auth" TLV @@ -1126,7 +1121,7 @@ DWORD CIcqProto::icq_sendServerGroup(DWORD dwCookie, WORD wAction, WORD wGroupId icq_packet pBuffer; // I reuse the ICQ packet type as a generic buffer // I should be ashamed! ;) - if (strlennull(szName) == 0 && wGroupId != 0) { + if (mir_strlen(szName) == 0 && wGroupId != 0) { debugLogA("Group upload failed (GroupName missing)."); return 0; // without name we could not change the group } @@ -1140,7 +1135,7 @@ DWORD CIcqProto::icq_sendServerGroup(DWORD dwCookie, WORD wAction, WORD wGroupId pBuffer.wLen = wTLVlen; if (wTLVlen) - packTLV(&pBuffer, SSI_TLV_SUBITEMS, (WORD)cbContent, (LPBYTE)pContent); // Groups TLV + packTLV(&pBuffer, SSI_TLV_SUBITEMS, cbContent, (LPBYTE)pContent); // Groups TLV return icq_sendServerItem(dwCookie, wAction, wGroupId, 0, szName, pBuffer.pData, wTLVlen, SSI_ITEM_GROUP, SSOP_GROUP_ACTION | dwOperationFlags, 400, NULL); } @@ -1385,7 +1380,7 @@ int CIcqProto::getCListGroupExists(const char *szGroup) if (!szGroup) return 0; - int size = strlennull(szGroup) + 2; + size_t size = mir_strlen(szGroup) + 2; TCHAR *tszGroup = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(szGroup, tszGroup, size)) @@ -1417,24 +1412,21 @@ int CIcqProto::moveContactToCListGroup(MCONTACT hContact, const char *szGroup) // utility function which counts > on start of a server group name static int countGroupNameLevel(const char *szGroupName) { - int nNameLen = strlennull(szGroupName); - int i = 0; + size_t nNameLen = mir_strlen(szGroupName); - while (i < nNameLen) { + for (size_t i=0; i < nNameLen; i++) if (szGroupName[i] != '>') - return i; + return (int)i; - i++; - } return -1; } static int countCListGroupLevel(const char *szClistName) { - int nNameLen = strlennull(szClistName); - int i, level = 0; + size_t nNameLen = mir_strlen(szClistName); + int level = 0; - for (i = 0; i < nNameLen; i++) + for (size_t i = 0; i < nNameLen; i++) if (szClistName[i] == '\\') level++; return level; @@ -1496,7 +1488,7 @@ char *CIcqProto::getServListGroupCListPath(WORD wGroupId) char *szParentGroup = getServListGroupCListPath(wParentGroupId); /// FIXME: properly handle ~N suffixes - szParentGroup = (char*)SAFE_REALLOC(szParentGroup, strlennull(szGroup) + strlennull(szParentGroup) + 2); + szParentGroup = (char*)SAFE_REALLOC(szParentGroup, mir_strlen(szGroup) + mir_strlen(szParentGroup) + 2); strcat(szParentGroup, "\\"); strcat(szParentGroup, (char*)szGroup + nGroupLevel); @@ -1561,8 +1553,8 @@ char* CIcqProto::getServListUniqueGroupName(const char *szGroupName, int bAlloce char szUnique[10]; _itoa(uniqueID++, szUnique, 10); - null_strcut(szGroupNameBase, m_wServerListRecordNameMaxLength - strlennull(szUnique) - 1); - szNewGroupName = (char*)SAFE_MALLOC(strlennull(szUnique) + strlennull(szGroupNameBase) + 2); + null_strcut(szGroupNameBase, m_wServerListRecordNameMaxLength - mir_strlen(szUnique) - 1); + szNewGroupName = (char*)SAFE_MALLOC(mir_strlen(szUnique) + mir_strlen(szGroupNameBase) + 2); if (szNewGroupName) { strcpy(szNewGroupName, szGroupNameBase); strcat(szNewGroupName, "~"); @@ -1597,7 +1589,7 @@ int CIcqProto::servlistCreateGroup_gotParentGroup(const char *szGroup, WORD wGro if (nResult == PENDING_RESULT_PURGE) // only cleanup return CALLBACK_RESULT_CONTINUE; - szSubGroup = (char*)SAFE_MALLOC(strlennull(szGroup) + strlennull(szSubGroupName) + 2); + szSubGroup = (char*)SAFE_MALLOC(mir_strlen(szGroup) + mir_strlen(szSubGroupName) + 2); if (szSubGroup) { strcpy(szSubGroup, szGroup); strcat(szSubGroup, "\\"); @@ -1624,7 +1616,7 @@ int CIcqProto::servlistCreateGroup_gotParentGroup(const char *szGroup, WORD wGro if (!CheckServerID(wSubGroupID, 0)) { // the next id is free, so create our group with that id cookie_servlist_action *ack; DWORD dwCookie; - char *szSubGroupItem = (char*)SAFE_MALLOC(strlennull(szSubGroupName) + wSubGroupLevel + 1); + char *szSubGroupItem = (char*)SAFE_MALLOC(mir_strlen(szSubGroupName) + wSubGroupLevel + 1); if (szSubGroupItem) { int i; @@ -1633,7 +1625,7 @@ int CIcqProto::servlistCreateGroup_gotParentGroup(const char *szGroup, WORD wGro szSubGroupItem[i] = '>'; strcpy(szSubGroupItem + wSubGroupLevel, szSubGroupName); - szSubGroupItem[strlennull(szSubGroupName) + wSubGroupLevel] = '\0'; + szSubGroupItem[mir_strlen(szSubGroupName) + wSubGroupLevel] = '\0'; SAFE_FREE((void**)&szSubGroupName); // check and create unique group name (Miranda does allow more subgroups with the same name!) szSubGroupItem = getServListUniqueGroupName(szSubGroupItem, TRUE); @@ -1730,7 +1722,7 @@ void CIcqProto::servlistCreateGroup(const char *szGroupPath, LPARAM param, PENDI { char *szGroup = (char*)szGroupPath; - if (!strlennull(szGroup)) szGroup = DEFAULT_SS_GROUP; + if (!mir_strlen(szGroup)) szGroup = DEFAULT_SS_GROUP; servlistPendingAddGroup(szGroup, 0, 0, &CIcqProto::servlistCreateGroup_Ready, TRUE, param, callback); } @@ -2162,7 +2154,7 @@ void CIcqProto::servlistRenameGroup(char *szGroup, WORD wGroupId, char *szNewGro if (!strcmpnull(szGroupName, szNewGroupName)) return; szGroupName = szNewGroupName; - szNewGroupName = (char*)SAFE_MALLOC(strlennull(szGroupName) + 1 + nGroupLevel); + szNewGroupName = (char*)SAFE_MALLOC(mir_strlen(szGroupName) + 1 + nGroupLevel); if (!szNewGroupName) return; // Failure for (i = 0; i < nGroupLevel; i++) { // create level prefix diff --git a/protocols/IcqOscarJ/src/icq_servlist.h b/protocols/IcqOscarJ/src/icq_servlist.h index e94472ba1e..ceda6b82cd 100644 --- a/protocols/IcqOscarJ/src/icq_servlist.h +++ b/protocols/IcqOscarJ/src/icq_servlist.h @@ -1,23 +1,23 @@ // ---------------------------------------------------------------------------80 // ICQ plugin for Miranda Instant Messenger // ________________________________________ -// +// // Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede // Copyright © 2001-2002 Jon Keating, Richard Hughes // Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater // Copyright © 2004-2010 Joe Kucera // Copyright © 2012-2014 Miranda NG Team -// +// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. -// +// // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. @@ -55,13 +55,13 @@ typedef int (__cdecl CIcqProto::*PENDING_CONTACT_CALLBACK)(MCONTACT hContact, WO struct cookie_servlist_action { MCONTACT hContact; - char *szGroup; + char *szGroup; WORD wContactId; WORD wGroupId; char *szGroupName; WORD wNewContactId; WORD wNewGroupId; - int dwAction; + int dwAction; LPARAM lParam; int dwGroupCount; cookie_servlist_action **pGroupItems; diff --git a/protocols/IcqOscarJ/src/icq_uploadui.cpp b/protocols/IcqOscarJ/src/icq_uploadui.cpp index 652462d060..bbbb5c00d6 100644 --- a/protocols/IcqOscarJ/src/icq_uploadui.cpp +++ b/protocols/IcqOscarJ/src/icq_uploadui.cpp @@ -140,7 +140,7 @@ static void GetLastUploadLogLine(HWND hwndDlg, char *szBuf, size_t cbBuf) static int GroupEnumIdsEnumProc(const char *szSetting,LPARAM lParam) { // it is probably server group - if (szSetting && strlennull(szSetting) < 5) { + if (szSetting && mir_strlen(szSetting) < 5) { char val[MAX_PATH+2]; // dummy if (db_get_static(NULL, (char*)lParam, szSetting, val, MAX_PATH)) return 0; // this converts all string types to DBVT_ASCIIZ @@ -537,7 +537,7 @@ static INT_PTR CALLBACK DlgProcUploadList(HWND hwndDlg, UINT message, WPARAM wPa if (isChecked) { // Queue for uploading pszGroup = ppro->getContactCListGroup(hContact); - if (!strlennull(pszGroup)) + if (!mir_strlen(pszGroup)) pszGroup = null_strdup(DEFAULT_SS_GROUP); // Get group ID from cache, if not ready use parent group, if still not ready create one @@ -602,7 +602,7 @@ static INT_PTR CALLBACK DlgProcUploadList(HWND hwndDlg, UINT message, WPARAM wPa WORD wCurrentGroupId = ppro->getWord(hContact, DBSETTING_SERVLIST_GROUP, 0); pszGroup = ppro->getContactCListGroup(hContact); - if (!strlennull(pszGroup)) + if (!mir_strlen(pszGroup)) pszGroup = null_strdup(DEFAULT_SS_GROUP); wNewGroupId = ppro->getServListGroupLinkID(pszGroup); if (!wNewGroupId && strstrnull(pszGroup, "\\") != NULL) { // if it is sub-group, take master parent diff --git a/protocols/IcqOscarJ/src/icq_xstatus.cpp b/protocols/IcqOscarJ/src/icq_xstatus.cpp index b60eb7cd60..fef0ede1c6 100644 --- a/protocols/IcqOscarJ/src/icq_xstatus.cpp +++ b/protocols/IcqOscarJ/src/icq_xstatus.cpp @@ -561,7 +561,7 @@ static LRESULT CALLBACK MessageEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam SendMessage(hwnd, WM_KEYDOWN, VK_LEFT, 0); SendMessage(hwnd, EM_GETSEL, (WPARAM)&start, (LPARAM) (PDWORD) NULL); WCHAR *text = GetWindowTextUcs(hwnd); - MoveMemory(text + start, text + end, sizeof(WCHAR) * (strlennull(text) + 1 - end)); + MoveMemory(text + start, text + end, sizeof(WCHAR) * (mir_wstrlen(text) + 1 - end)); SetWindowTextUcs(hwnd, text); SAFE_FREE(&text); SendMessage(hwnd, EM_SETSEL, start, start); @@ -837,7 +837,7 @@ INT_PTR CIcqProto::menuXStatus(WPARAM wParam,LPARAM lParam,LPARAM fParam) void CIcqProto::InitXStatusItems(BOOL bAllowStatus) { - int len = strlennull(m_szModuleName); + size_t len = mir_strlen(m_szModuleName); char srvFce[MAX_PATH + 64]; char szItem[MAX_PATH + 64]; int bXStatusMenuBuilt = 0; @@ -1053,7 +1053,7 @@ INT_PTR CIcqProto::GetXStatusEx(WPARAM hContact, LPARAM lParam) if (pData->wParam) { if (m_bXStatusEnabled && !getString(hContact, DBSETTING_XSTATUS_NAME, &dbv)) - *pData->wParam = strlennull(dbv.pszVal); + *pData->wParam = mir_strlen(dbv.pszVal); else *pData->wParam = 0; db_free(&dbv); @@ -1061,7 +1061,7 @@ INT_PTR CIcqProto::GetXStatusEx(WPARAM hContact, LPARAM lParam) if (pData->lParam) { if (!getString(hContact, CheckContactCapabilities(hContact, CAPF_STATUS_MOOD) ? DBSETTING_STATUS_NOTE : DBSETTING_XSTATUS_MSG, &dbv)) - *pData->lParam = strlennull(dbv.pszVal); + *pData->lParam = mir_strlen(dbv.pszVal); else *pData->lParam = 0; db_free(&dbv); diff --git a/protocols/IcqOscarJ/src/icq_xtraz.cpp b/protocols/IcqOscarJ/src/icq_xtraz.cpp index ef7f84a154..0e2d4199e4 100644 --- a/protocols/IcqOscarJ/src/icq_xtraz.cpp +++ b/protocols/IcqOscarJ/src/icq_xtraz.cpp @@ -29,7 +29,7 @@ #include "icqoscar.h" -void CIcqProto::handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC) +void CIcqProto::handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC) { char *szNotify = strstrnull(szMsg, ""); char *szQuery = strstrnull(szMsg, ""); @@ -77,14 +77,14 @@ void CIcqProto::handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD w NotifyEventHooks(m_modeMsgsEvent, (WPARAM)MTYPE_SCRIPT_NOTIFY, (LPARAM)dwUin); char *tmp = getSettingStringUtf(NULL, DBSETTING_XSTATUS_NAME, ""); - char *szXName = MangleXml(tmp, strlennull(tmp)); + char *szXName = MangleXml(tmp, mir_strlen(tmp)); SAFE_FREE(&tmp); tmp = getSettingStringUtf(NULL, DBSETTING_XSTATUS_MSG, ""); - char *szXMsg = MangleXml(tmp, strlennull(tmp)); + char *szXMsg = MangleXml(tmp, mir_strlen(tmp)); SAFE_FREE(&tmp); - int nResponseLen = 212 + strlennull(szXName) + strlennull(szXMsg) + UINMAXLEN + 2; + size_t nResponseLen = 212 + mir_strlen(szXName) + mir_strlen(szXMsg) + UINMAXLEN + 2; char *szResponse = (char*)_alloca(nResponseLen + 1); // send response mir_snprintf(szResponse, nResponseLen, @@ -123,7 +123,7 @@ void CIcqProto::handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD w virtual void execute() { - ppro->SendXtrazNotifyResponse(dwUin, dwMsgID1, dwMsgID2, wCookie, szResponse, strlennull(szResponse), bThruDC); + ppro->SendXtrazNotifyResponse(dwUin, dwMsgID1, dwMsgID2, wCookie, szResponse, mir_strlen(szResponse), bThruDC); }; BOOL bThruDC; @@ -167,10 +167,10 @@ void CIcqProto::handleXtrazNotify(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD w else debugLogA("Error: Invalid Xtraz Notify message"); } -void CIcqProto::handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD wCookie, char* szMsg, int nMsgLen) +void CIcqProto::handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD wCookie, char* szMsg, size_t nMsgLen) { char *szMem, *szRes, *szEnd; - int nResLen; + size_t nResLen; debugLogA("Received Xtraz Notify Response"); @@ -218,7 +218,7 @@ void CIcqProto::handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD w char *szXName, *szOldXName; szNode += 7; *szEnd = '\0'; - szXName = DemangleXml(szNode, strlennull(szNode)); + szXName = DemangleXml(szNode, mir_strlen(szNode)); // check if the name changed szOldXName = getSettingStringUtf(hContact, DBSETTING_XSTATUS_NAME, NULL); if (strcmpnull(szOldXName, szXName)) @@ -234,7 +234,7 @@ void CIcqProto::handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD w char *szXMsg, *szOldXMsg; szNode += 6; *szEnd = '\0'; - szXMsg = DemangleXml(szNode, strlennull(szNode)); + szXMsg = DemangleXml(szNode, mir_strlen(szNode)); // check if the decription changed szOldXMsg = getSettingStringUtf(hContact, DBSETTING_XSTATUS_NAME, NULL); if (strcmpnull(szOldXMsg, szXMsg)) @@ -263,12 +263,10 @@ void CIcqProto::handleXtrazNotifyResponse(DWORD dwUin, MCONTACT hContact, WORD w else debugLogA("Error: Invalid Xtraz Notify response"); } -static char* getXmlPidItem(const char* szData, int nLen) +static char* getXmlPidItem(const char* szData, size_t nLen) { - const char *szPid, *szEnd; - - szPid = strstrnull(szData, ""); - szEnd = strstrnull(szData, ""); + const char *szPid = strstrnull(szData, ""); + const char *szEnd = strstrnull(szData, ""); if (szPid && szEnd) { szPid += 5; @@ -278,7 +276,7 @@ static char* getXmlPidItem(const char* szData, int nLen) } -void CIcqProto::handleXtrazInvitation(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC) +void CIcqProto::handleXtrazInvitation(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC) { MCONTACT hContact = HContactFromUIN(dwUin, NULL); if (hContact) // user sent us xtraz, he supports it @@ -294,7 +292,7 @@ void CIcqProto::handleXtrazInvitation(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WO } -void CIcqProto::handleXtrazData(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, int nMsgLen, BOOL bThruDC) +void CIcqProto::handleXtrazData(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szMsg, size_t nMsgLen, BOOL bThruDC) { MCONTACT hContact; char* szPluginID; @@ -355,30 +353,24 @@ void CIcqProto::handleXtrazData(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCo // Functions really sending Xtraz stuff DWORD CIcqProto::SendXtrazNotifyRequest(MCONTACT hContact, char* szQuery, char* szNotify, int bForced) { - char *szQueryBody; - char *szNotifyBody; DWORD dwUin; - int nBodyLen; - char *szBody; - DWORD dwCookie; - if (getContactUid(hContact, &dwUin, NULL)) return 0; // Invalid contact if (!CheckContactCapabilities(hContact, CAPF_XTRAZ) && !bForced) return 0; // Contact does not support xtraz, do not send anything - szQueryBody = MangleXml(szQuery, strlennull(szQuery)); - szNotifyBody = MangleXml(szNotify, strlennull(szNotify)); - nBodyLen = strlennull(szQueryBody) + strlennull(szNotifyBody) + 41; - szBody = (char*)_alloca(nBodyLen); + char *szQueryBody = MangleXml(szQuery, mir_strlen(szQuery)); + char *szNotifyBody = MangleXml(szNotify, mir_strlen(szNotify)); + size_t nBodyLen = mir_strlen(szQueryBody) + mir_strlen(szNotifyBody) + 41; + char *szBody = (char*)_alloca(nBodyLen); nBodyLen = mir_snprintf(szBody, nBodyLen, "%s%s", szQueryBody, szNotifyBody); SAFE_FREE((void**)&szQueryBody); SAFE_FREE((void**)&szNotifyBody); // Set up the ack type cookie_message_data *pCookieData = CreateMessageCookie(MTYPE_SCRIPT_NOTIFY, ACKTYPE_CLIENT); - dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); + DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); // have we a open DC, send through that if (m_bDCMsgEnabled && IsDirectConnectionOpen(hContact, DIRECTCONN_STANDARD, 0)) @@ -390,10 +382,10 @@ DWORD CIcqProto::SendXtrazNotifyRequest(MCONTACT hContact, char* szQuery, char* } -void CIcqProto::SendXtrazNotifyResponse(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szResponse, int nResponseLen, BOOL bThruDC) +void CIcqProto::SendXtrazNotifyResponse(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szResponse, size_t nResponseLen, BOOL bThruDC) { char *szResBody = MangleXml(szResponse, nResponseLen); - int nBodyLen = strlennull(szResBody) + 21; + size_t nBodyLen = mir_strlen(szResBody) + 21; char *szBody = (char*)_alloca(nBodyLen); MCONTACT hContact = HContactFromUIN(dwUin, NULL); diff --git a/protocols/IcqOscarJ/src/icqosc_svcs.cpp b/protocols/IcqOscarJ/src/icqosc_svcs.cpp index 52ff1339da..4e1f00b779 100644 --- a/protocols/IcqOscarJ/src/icqosc_svcs.cpp +++ b/protocols/IcqOscarJ/src/icqosc_svcs.cpp @@ -107,7 +107,7 @@ INT_PTR CIcqProto::GetInfoSetting(WPARAM hContact, LPARAM lParam) } } else { - char *savePtr = dbv.pszVal ? strcpy((char*)_alloca(strlennull(dbv.pszVal) + 1), dbv.pszVal) : NULL; + char *savePtr = dbv.pszVal ? strcpy((char*)_alloca(mir_strlen(dbv.pszVal) + 1), dbv.pszVal) : NULL; if (!mir_utf8decode(savePtr, &cgs->pValue->pwszVal)) rc = 1; } @@ -157,15 +157,14 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) return 0; PBYTE buf = NULL; - int buflen = 0; - BYTE b; + size_t buflen = 0; // userinfo ppackTLVWord(&buf, &buflen, 0x1C2, (WORD)GetACP()); if (wParam & CIXT_CONTACT) { // contact information BYTE *pBlock = NULL; - int cbBlock = 0; + size_t cbBlock = 0; int nItems = 0; // Emails @@ -193,7 +192,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) } if (wParam & CIXT_MORE) { - b = getByte("Gender", 0); + BYTE b = getByte("Gender", 0); ppackTLVByte(&buf, &buflen, 0x82, (BYTE)(b ? (b == 'M' ? 2 : 1) : 0)); ppackTLVDateFromDB(&buf, &buflen, "BirthYear", "BirthMonth", "BirthDay", 0x1A4); @@ -207,7 +206,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) if (wParam & CIXT_WORK) { BYTE *pBlock = NULL; - int cbBlock = 0; + size_t cbBlock = 0; int nItems = 1; // Jobs @@ -229,7 +228,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) if (wParam & CIXT_EDUCATION) { BYTE *pBlock = NULL; - int cbBlock = 0; + size_t cbBlock = 0; int nItems = 1; // Studies @@ -242,7 +241,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) if (wParam & CIXT_LOCATION) { BYTE *pBlock = NULL; - int cbBlock = 0; + size_t cbBlock = 0; int nItems = 1; // Home Address @@ -271,7 +270,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) if (wParam & CIXT_BACKGROUND) { BYTE *pBlock = NULL; - int cbBlock = 0; + size_t cbBlock = 0; int nItems = 0; // Interests @@ -282,7 +281,7 @@ INT_PTR CIcqProto::ChangeInfoEx(WPARAM wParam, LPARAM lParam) ppackTLVBlockItems(&buf, &buflen, 0x122, &nItems, &pBlock, (WORD*)&cbBlock, FALSE); } - DWORD dwCookie = icq_changeUserDirectoryInfoServ(buf, (WORD)buflen, DIRECTORYREQUEST_UPDATEOWNER); + DWORD dwCookie = icq_changeUserDirectoryInfoServ(buf, buflen, DIRECTORYREQUEST_UPDATEOWNER); SAFE_FREE((void**)&buf); @@ -587,7 +586,7 @@ MCONTACT CIcqProto::AddToListByUID(const char *szUID, DWORD dwFlags) ///////////////////////////////////////////////////////////////////////////////////////// -void CIcqProto::ICQAddRecvEvent(MCONTACT hContact, WORD wType, PROTORECVEVENT* pre, DWORD cbBlob, PBYTE pBlob, DWORD flags) +void CIcqProto::ICQAddRecvEvent(MCONTACT hContact, WORD wType, PROTORECVEVENT* pre, size_t cbBlob, PBYTE pBlob, DWORD flags) { if (pre->flags & PREF_CREATEREAD) flags |= DBEF_READ; @@ -670,12 +669,12 @@ INT_PTR icq_getEventTextMissedMessage(WPARAM wParam, LPARAM lParam) } if (pEvent->datatype == DBVT_WCHAR) { WCHAR *pwszText; - int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszText, strlennull(pszText), NULL, 0); + int wchars = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszText, (int)mir_strlen(pszText), NULL, 0); pwszText = (WCHAR*)_alloca((wchars + 1) * sizeof(WCHAR)); pwszText[wchars] = 0; - MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszText, strlennull(pszText), pwszText, wchars); + MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszText, (int)mir_strlen(pszText), pwszText, wchars); nRetVal = (INT_PTR)mir_wstrdup(TranslateW(pwszText)); } diff --git a/protocols/IcqOscarJ/src/oscar_filetransfer.cpp b/protocols/IcqOscarJ/src/oscar_filetransfer.cpp index b1f5cb1af2..9cc7a54354 100644 --- a/protocols/IcqOscarJ/src/oscar_filetransfer.cpp +++ b/protocols/IcqOscarJ/src/oscar_filetransfer.cpp @@ -56,8 +56,7 @@ char* FindFilePathContainer(const char **files, int iFile, char *szContainer) if (szThisFile != szFileName) { // find an earlier subdirectory to be used as a container for (int i = iFile - 1; i >= 0; i--) { - int len = strlennull(files[i]); - + size_t len = mir_strlen(files[i]); if (!_strnicmp(files[i], szThisFile, len) && (szThisFile[len] == '\\' || szThisFile[len] == '/')) { const char *pszLastBackslash; @@ -323,7 +322,7 @@ void CIcqProto::ReleaseOscarListener(oscar_listener **pListener) // Miranda FT interface handlers & services ///////////////////////////// -void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand) +void CIcqProto::handleRecvServMsgOFT(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, DWORD dwID1, DWORD dwID2, WORD wCommand) { MCONTACT hContact = HContactFromUID(dwUin, szUID, NULL); @@ -392,7 +391,7 @@ void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *sz else str = null_strdup(str); // eliminate HTML tags - pszDescription = EliminateHtml(str, strlennull(str)); + pszDescription = EliminateHtml(str, mir_strlen(str)); bTag = strstrnull(pszDescription, ""); if (bTag) { // take special Description - ICQJ's extension @@ -418,7 +417,7 @@ void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *sz } } } - if (!strlennull(pszDescription)) { + if (!mir_strlen(pszDescription)) { SAFE_FREE(&pszDescription); pszDescription = ICQTranslateUtf(LPGEN("No description given")); } @@ -465,7 +464,7 @@ void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *sz else pszFileName = ansi_to_utf8(pszFileName); if (ft->wFilesCount == 1) { // Filename - use for DB event - char *szFileName = (char*)_alloca(strlennull(pszFileName) + 1); + char *szFileName = (char*)_alloca(mir_strlen(pszFileName) + 1); strcpy(szFileName, pszFileName); SAFE_FREE(&pszFileName); @@ -497,10 +496,10 @@ void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *sz ft->fileId = -1; // Send chain event - char *szBlob = (char*)_alloca(sizeof(DWORD) + strlennull(pszFileName) + strlennull(pszDescription) + 2); + char *szBlob = (char*)_alloca(sizeof(DWORD) + mir_strlen(pszFileName) + mir_strlen(pszDescription) + 2); *(PDWORD)szBlob = 0; strcpy(szBlob + sizeof(DWORD), pszFileName); - strcpy(szBlob + sizeof(DWORD) + strlennull(pszFileName) + 1, pszDescription); + strcpy(szBlob + sizeof(DWORD) + mir_strlen(pszFileName) + 1, pszDescription); TCHAR* ptszFileName = mir_utf8decodeT(pszFileName); @@ -621,7 +620,7 @@ void CIcqProto::handleRecvServMsgOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *sz else debugLogA("Error: Unknown wCommand=0x%x in OFT request", wCommand); } -void CIcqProto::handleRecvServResponseOFT(BYTE *buf, WORD wLen, DWORD dwUin, char *szUID, void* ft) +void CIcqProto::handleRecvServResponseOFT(BYTE *buf, size_t wLen, DWORD dwUin, char *szUID, void* ft) { WORD wDataLen; @@ -814,7 +813,7 @@ HANDLE CIcqProto::oftInitTransfer(MCONTACT hContact, DWORD dwUin, char* szUid, c } else { // check if transfering one directory char *szFirstDiv, *szFirstDir = ft->file_containers[0]; - int nFirstDirLen; + size_t nFirstDirLen; // default is no root dir pszFiles = ""; @@ -822,7 +821,7 @@ HANDLE CIcqProto::oftInitTransfer(MCONTACT hContact, DWORD dwUin, char* szUid, c if ((szFirstDiv = strstrnull(szFirstDir, "\\")) || (szFirstDiv = strstrnull(szFirstDir, "/"))) nFirstDirLen = szFirstDiv - szFirstDir; else - nFirstDirLen = strlennull(szFirstDir); + nFirstDirLen = mir_strlen(szFirstDir); if (nFirstDirLen) { // got root dir from first container, check if others are only sub-dirs for (i = 0; i < ft->containerCount; i++) { @@ -874,7 +873,7 @@ HANDLE CIcqProto::oftFileAllow(MCONTACT hContact, HANDLE hTransfer, const TCHAR ft->szSavePath = tchar_to_utf8(szPath); if (ft->szThisPath) { // Append Directory name to the save path, when transfering a directory - ft->szSavePath = (char*)SAFE_REALLOC(ft->szSavePath, strlennull(ft->szSavePath) + strlennull(ft->szThisPath) + 4); + ft->szSavePath = (char*)SAFE_REALLOC(ft->szSavePath, mir_strlen(ft->szSavePath) + mir_strlen(ft->szThisPath) + 4); NormalizeBackslash(ft->szSavePath); strcat(ft->szSavePath, ft->szThisPath); NormalizeBackslash(ft->szSavePath); @@ -1420,7 +1419,7 @@ int CIcqProto::oft_handlePackets(oscar_connection *oc, BYTE *buf, int len) #ifdef _DEBUG NetLog_Direct("OFT2: Type %u, Length %u bytes", datatype, datalen); #endif - handleOFT2FramePacket(oc, datatype, pBuf, (WORD)(datalen - 8)); + handleOFT2FramePacket(oc, datatype, pBuf, datalen-8); /* Increase pointers so we can check for more data */ buf += datalen; @@ -1623,7 +1622,7 @@ int CIcqProto::oft_handleFileData(oscar_connection *oc, BYTE *buf, int len) return bytesUsed; } -void CIcqProto::handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE *pBuffer, WORD wLen) +void CIcqProto::handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE *pBuffer, size_t wLen) { oscar_filetransfer *ft = oc->ft; DWORD dwID1; @@ -1729,7 +1728,7 @@ void CIcqProto::handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE ft->szThisFile = ansi_to_utf8(ft->rawFileName); // convert dir markings to normal backslashes - for (int i = 0; i < strlennull(ft->szThisFile); i++) + for (int i = 0; i < mir_strlen(ft->szThisFile); i++) if (ft->szThisFile[i] == 0x01) ft->szThisFile[i] = '\\'; @@ -1760,7 +1759,7 @@ void CIcqProto::handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE break; } - char *szFullPath = (char*)SAFE_MALLOC(strlennull(ft->szSavePath) + strlennull(ft->szThisPath) + strlennull(ft->szThisFile) + 3); + char *szFullPath = (char*)SAFE_MALLOC(mir_strlen(ft->szSavePath) + mir_strlen(ft->szThisPath) + mir_strlen(ft->szThisFile) + 3); strcpy(szFullPath, ft->szSavePath); NormalizeBackslash(szFullPath); strcat(szFullPath, ft->szThisPath); @@ -1929,12 +1928,12 @@ void CIcqProto::handleOFT2FramePacket(oscar_connection *oc, WORD datatype, BYTE void CIcqProto::proxy_sendInitTunnel(oscar_connection *oc) { icq_packet packet; - WORD wLen = 39 + getUINLen(m_dwLocalUIN); + size_t wLen = 39 + getUINLen(m_dwLocalUIN); - packet.wLen = wLen; + packet.wLen = WORD(wLen); init_generic_packet(&packet, 2); - packWord(&packet, wLen); + packWord(&packet, WORD(wLen)); packWord(&packet, OSCAR_PROXY_VERSION); packWord(&packet, 0x02); // wCommand packDWord(&packet, 0); // Unknown @@ -1951,12 +1950,12 @@ void CIcqProto::proxy_sendInitTunnel(oscar_connection *oc) void CIcqProto::proxy_sendJoinTunnel(oscar_connection *oc, WORD wPort) { icq_packet packet; - WORD wLen = 41 + getUINLen(m_dwLocalUIN); + size_t wLen = 41 + getUINLen(m_dwLocalUIN); - packet.wLen = wLen; + packet.wLen = WORD(wLen); init_generic_packet(&packet, 2); - packWord(&packet, wLen); + packWord(&packet, WORD(wLen)); packWord(&packet, OSCAR_PROXY_VERSION); packWord(&packet, 0x04); // wCommand packDWord(&packet, 0); // Unknown @@ -2001,7 +2000,7 @@ void CIcqProto::oft_sendFileData(oscar_connection *oc) icq_packet packet; packet.wLen = bytesRead; init_generic_packet(&packet, 0); - packBuffer(&packet, buf, (WORD)bytesRead); // we are sending raw data + packBuffer(&packet, buf, bytesRead); // we are sending raw data sendOscarPacket(oc, &packet); ft->qwBytesDone += bytesRead; @@ -2045,13 +2044,13 @@ void CIcqProto::oft_sendPeerInit(oscar_connection *oc) // create full relative filename char* szThisContainer = ft->files[ft->iCurrentFile].szContainer; - char *pszThisFileName = (char*)SAFE_MALLOC(strlennull(ft->szThisFile) + strlennull(szThisContainer) + 4); + char *pszThisFileName = (char*)SAFE_MALLOC(mir_strlen(ft->szThisFile) + mir_strlen(szThisContainer) + 4); strcpy(pszThisFileName, szThisContainer); NormalizeBackslash(pszThisFileName); strcat(pszThisFileName, ExtractFileName(ft->szThisFile)); // convert backslashes to dir markings - for (int i = 0; i < strlennull(pszThisFileName); i++) + for (int i = 0; i < mir_strlen(pszThisFileName); i++) if (pszThisFileName[i] == '\\' || pszThisFileName[i] == '/') pszThisFileName[i] = 0x01; @@ -2077,9 +2076,9 @@ void CIcqProto::oft_sendPeerInit(oscar_connection *oc) ft->dwRecvFileCheck = 0xFFFF0000; SAFE_FREE((void**)&ft->rawFileName); - if (IsUSASCII(pszThisFileName, strlennull(pszThisFileName))) { + if (IsUSASCII(pszThisFileName, mir_strlen(pszThisFileName))) { ft->wEncoding = 0; // ascii - ft->cbRawFileName = strlennull(pszThisFileName) + 1; + ft->cbRawFileName = WORD(mir_strlen(pszThisFileName) + 1); if (ft->cbRawFileName < 64) ft->cbRawFileName = 64; ft->rawFileName = (char*)SAFE_MALLOC(ft->cbRawFileName); @@ -2090,16 +2089,16 @@ void CIcqProto::oft_sendPeerInit(oscar_connection *oc) ft->wEncoding = 2; // ucs-2 WCHAR *pwsThisFile = make_unicode_string(pszThisFileName); SAFE_FREE((void**)&pszThisFileName); - ft->cbRawFileName = WORD(strlennull(pwsThisFile) * sizeof(WCHAR)) + 2; + ft->cbRawFileName = WORD(mir_wstrlen(pwsThisFile) * sizeof(WCHAR)) + 2; if (ft->cbRawFileName < 64) ft->cbRawFileName = 64; ft->rawFileName = (char*)SAFE_MALLOC(ft->cbRawFileName); // convert to LE ordered string BYTE *pwsThisFileBuf = (BYTE*)pwsThisFile; // need this - unpackWideString moves the address! - unpackWideString(&pwsThisFileBuf, (WCHAR*)ft->rawFileName, (WORD)(strlennull(pwsThisFile) * sizeof(WCHAR))); + unpackWideString(&pwsThisFileBuf, (WCHAR*)ft->rawFileName, mir_wstrlen(pwsThisFile) * sizeof(WCHAR)); SAFE_FREE((void**)&pwsThisFile); } - ft->wFilesLeft = (WORD)(ft->wFilesCount - ft->iCurrentFile); + ft->wFilesLeft = WORD(ft->wFilesCount - ft->iCurrentFile); sendOFT2FramePacket(oc, OFT_TYPE_REQUEST); } @@ -2109,7 +2108,7 @@ void CIcqProto::sendOFT2FramePacket(oscar_connection *oc, WORD datatype) oscar_filetransfer *ft = oc->ft; icq_packet packet; - packet.wLen = 192 + ft->cbRawFileName; + packet.wLen = WORD(192 + ft->cbRawFileName); init_generic_packet(&packet, 0); // Basic Oscar Frame diff --git a/protocols/IcqOscarJ/src/oscar_filetransfer.h b/protocols/IcqOscarJ/src/oscar_filetransfer.h index 7ebc76e776..948bc1714d 100644 --- a/protocols/IcqOscarJ/src/oscar_filetransfer.h +++ b/protocols/IcqOscarJ/src/oscar_filetransfer.h @@ -100,7 +100,7 @@ struct oscar_filetransfer: public basic_filetransfer BYTE rawDummy[69]; BYTE rawMacInfo[16]; WORD wEncoding, wSubEncoding; - WORD cbRawFileName; + size_t cbRawFileName; char *rawFileName; // helper data DWORD64 qwFileBytesDone; diff --git a/protocols/IcqOscarJ/src/stdpackets.cpp b/protocols/IcqOscarJ/src/stdpackets.cpp index e8f884a222..b8295252dd 100644 --- a/protocols/IcqOscarJ/src/stdpackets.cpp +++ b/protocols/IcqOscarJ/src/stdpackets.cpp @@ -34,9 +34,9 @@ extern const int moodXStatus[]; */ // This is the part of the message header that is common for all message channels -static void packServMsgSendHeader(icq_packet *p, DWORD dwSequence, DWORD dwID1, DWORD dwID2, DWORD dwUin, const char *szUID, WORD wFmt, WORD wLen) +static void packServMsgSendHeader(icq_packet *p, DWORD dwSequence, DWORD dwID1, DWORD dwID2, DWORD dwUin, const char *szUID, WORD wFmt, size_t wLen) { - serverPacketInit(p, (WORD)(21 + getUIDLen(dwUin, szUID) + wLen)); + serverPacketInit(p, 21 + getUIDLen(dwUin, szUID) + wLen); packFNACHeader(p, ICQ_MSG_FAMILY, ICQ_MSG_SRV_SEND, 0, dwSequence | ICQ_MSG_SRV_SEND << 0x10); packLEDWord(p, dwID1); // Msg ID part 1 packLEDWord(p, dwID2); // Msg ID part 2 @@ -44,34 +44,34 @@ static void packServMsgSendHeader(icq_packet *p, DWORD dwSequence, DWORD dwID1, packUID(p, dwUin, szUID); // User ID } -static void packServIcqExtensionHeader(icq_packet *p, CIcqProto *ppro, WORD wLen, WORD wType, WORD wSeq, WORD wCmd = ICQ_META_CLI_REQUEST) +static void packServIcqExtensionHeader(icq_packet *p, CIcqProto *ppro, size_t wLen, WORD wType, WORD wSeq, WORD wCmd = ICQ_META_CLI_REQUEST) { - serverPacketInit(p, (WORD)(24 + wLen)); + serverPacketInit(p, 24 + wLen); packFNACHeader(p, ICQ_EXTENSIONS_FAMILY, ICQ_META_CLI_REQUEST, 0, wSeq | (wCmd << 0x10)); - packWord(p, 0x01); // TLV type 1 - packWord(p, (WORD)(10 + wLen)); // TLV len - packLEWord(p, (WORD)(8 + wLen)); // Data chunk size (TLV.Length-2) + packWord(p, 0x01); // TLV type 1 + packWord(p, WORD(10 + wLen)); // TLV len + packLEWord(p, WORD(8 + wLen)); // Data chunk size (TLV.Length-2) packLEDWord(p, ppro->m_dwLocalUIN); // My UIN - packLEWord(p, wType); // Request type + packLEWord(p, wType); // Request type packWord(p, wSeq); } -static void packServIcqDirectoryHeader(icq_packet *p, CIcqProto *ppro, WORD wLen, WORD wType, WORD wCommand, WORD wSeq, WORD wSubCommand = ICQ_META_CLI_REQUEST) +static void packServIcqDirectoryHeader(icq_packet *p, CIcqProto *ppro, size_t wLen, WORD wType, WORD wCommand, WORD wSeq, WORD wSubCommand = ICQ_META_CLI_REQUEST) { packServIcqExtensionHeader(p, ppro, wLen + 0x1E, CLI_META_INFO_REQ, wSeq, wSubCommand); packLEWord(p, wType); - packLEWord(p, wLen + 0x1A); + packLEWord(p, WORD(wLen + 0x1A)); packFNACHeader(p, 0x5b9, wCommand, 0, 0, 2); packWord(p, 0); packWord(p, (WORD)GetACP()); packDWord(p, 2); } -static void packServTLV5HeaderBasic(icq_packet *p, WORD wLen, DWORD ID1, DWORD ID2, WORD wCommand, const plugin_guid pGuid) +static void packServTLV5HeaderBasic(icq_packet *p, size_t wLen, DWORD ID1, DWORD ID2, WORD wCommand, const plugin_guid pGuid) { // TLV(5) header packWord(p, 0x05); // Type - packWord(p, (WORD)(26 + wLen)); // Len + packWord(p, WORD(26 + wLen)); // Len // TLV(5) data packWord(p, wCommand); // Command packLEDWord(p, ID1); // msgid1 @@ -79,18 +79,18 @@ static void packServTLV5HeaderBasic(icq_packet *p, WORD wLen, DWORD ID1, DWORD I packGUID(p, pGuid); // capabilities (4 dwords) } -static void packServTLV5HeaderMsg(icq_packet *p, WORD wLen, DWORD ID1, DWORD ID2, WORD wAckType) +static void packServTLV5HeaderMsg(icq_packet *p, size_t wLen, DWORD ID1, DWORD ID2, WORD wAckType) { - packServTLV5HeaderBasic(p, (WORD)(wLen + 10), ID1, ID2, 0, MCAP_SRV_RELAY_FMT); + packServTLV5HeaderBasic(p, wLen + 10, ID1, ID2, 0, MCAP_SRV_RELAY_FMT); packTLVWord(p, 0x0A, wAckType); // TLV: 0x0A Acktype: 1 for normal, 2 for ack packDWord(p, 0x000F0000); // TLV: 0x0F empty } -static void packServTLV2711Header(icq_packet *packet, WORD wCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, WORD X1, WORD X2, int nLen) +static void packServTLV2711Header(icq_packet *packet, WORD wCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, WORD X1, WORD X2, size_t nLen) { packWord(packet, 0x2711); // Type - packWord(packet, (WORD)(51 + nLen)); // Len + packWord(packet, WORD(51 + nLen)); // Len // TLV(0x2711) data packLEWord(packet, 0x1B); // Unknown packByte(packet, (BYTE)wVersion); // Client (message) version @@ -112,21 +112,21 @@ static void packServTLV2711Header(icq_packet *packet, WORD wCookie, WORD wVersio static void packServDCInfo(icq_packet *p, CIcqProto* ppro, BOOL bEmpty) { packTLVDWord(p, 0x03, bEmpty ? 0 : ppro->getDword("RealIP", 0)); // TLV: 0x03 DWORD IP - packTLVWord(p, 0x05, (WORD)(bEmpty ? 0 : ppro->wListenPort)); // TLV: 0x05 Listen port + packTLVWord(p, 0x05, WORD(bEmpty ? 0 : ppro->wListenPort)); // TLV: 0x05 Listen port } -static void packServChannel2Header(icq_packet *p, CIcqProto* ppro, DWORD dwUin, WORD wLen, DWORD dwID1, DWORD dwID2, DWORD dwCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, WORD wPriority, int isAck, int includeDcInfo, BYTE bRequestServerAck) +static void packServChannel2Header(icq_packet *p, CIcqProto* ppro, DWORD dwUin, size_t wLen, DWORD dwID1, DWORD dwID2, DWORD dwCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, WORD wPriority, int isAck, int includeDcInfo, BYTE bRequestServerAck) { - packServMsgSendHeader(p, dwCookie, dwID1, dwID2, dwUin, NULL, 0x0002, (WORD)(wLen + 95 + (bRequestServerAck ? 4 : 0) + (includeDcInfo ? 14 : 0))); + packServMsgSendHeader(p, dwCookie, dwID1, dwID2, dwUin, NULL, 0x0002, wLen + 95 + (bRequestServerAck ? 4 : 0) + (includeDcInfo ? 14 : 0)); packWord(p, 0x05); // TLV type - packWord(p, (WORD)(wLen + 91 + (includeDcInfo ? 14 : 0))); /* TLV len */ - packWord(p, (WORD)(isAck ? 2 : 0)); /* not aborting anything */ + packWord(p, WORD(wLen + 91 + (includeDcInfo ? 14 : 0))); /* TLV len */ + packWord(p, WORD(isAck ? 2 : 0)); /* not aborting anything */ packLEDWord(p, dwID1); // Msg ID part 1 packLEDWord(p, dwID2); // Msg ID part 2 packGUID(p, MCAP_SRV_RELAY_FMT); /* capability (4 dwords) */ packDWord(p, 0x000A0002); // TLV: 0x0A WORD: 1 for normal, 2 for ack - packWord(p, (WORD)(isAck ? 2 : 1)); + packWord(p, isAck ? 2 : 1); if (includeDcInfo) packServDCInfo(p, ppro, FALSE); @@ -136,9 +136,9 @@ static void packServChannel2Header(icq_packet *p, CIcqProto* ppro, DWORD dwUin, packServTLV2711Header(p, (WORD)dwCookie, wVersion, bMsgType, bMsgFlags, (WORD)MirandaStatusToIcq(ppro->m_iStatus), wPriority, wLen); } -static void packServAdvancedReply(icq_packet *p, DWORD dwUin, const char *szUid, DWORD dwID1, DWORD dwID2, WORD wCookie, WORD wLen) +static void packServAdvancedReply(icq_packet *p, DWORD dwUin, const char *szUid, DWORD dwID1, DWORD dwID2, WORD wCookie, size_t wLen) { - serverPacketInit(p, (WORD)(getUIDLen(dwUin, szUid) + 23 + wLen)); + serverPacketInit(p, getUIDLen(dwUin, szUid) + 23 + wLen); packFNACHeader(p, ICQ_MSG_FAMILY, ICQ_MSG_RESPONSE, 0, ICQ_MSG_RESPONSE << 0x10 | (wCookie & 0x7FFF)); packLEDWord(p, dwID1); // Msg ID part 1 packLEDWord(p, dwID2); // Msg ID part 2 @@ -147,9 +147,9 @@ static void packServAdvancedReply(icq_packet *p, DWORD dwUin, const char *szUid, packWord(p, 0x03); // Msg specific formating } -static void packServAdvancedMsgReply(icq_packet *p, DWORD dwUin, const char *szUid, DWORD dwID1, DWORD dwID2, WORD wCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, WORD wLen) +static void packServAdvancedMsgReply(icq_packet *p, DWORD dwUin, const char *szUid, DWORD dwID1, DWORD dwID2, WORD wCookie, WORD wVersion, BYTE bMsgType, BYTE bMsgFlags, size_t wLen) { - packServAdvancedReply(p, dwUin, szUid, dwID1, dwID2, wCookie, (WORD)(wLen + 51)); + packServAdvancedReply(p, dwUin, szUid, dwID1, dwID2, wCookie, wLen + 51); packLEWord(p, 0x1B); // Unknown packByte(p, (BYTE)wVersion); // Protocol version @@ -196,7 +196,7 @@ void CIcqProto::icq_sendCloseConnection() sendServPacket(&packet); } -void CIcqProto::icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandler)(HANDLE hConn, char* cookie, WORD cookieLen)) +void CIcqProto::icq_requestnewfamily(WORD wFamily, void (CIcqProto::*familyhandler)(HANDLE hConn, char* cookie, size_t cookieLen)) { int bRequestSSL = m_bSecureConnection && (wFamily != ICQ_AVATAR_FAMILY); // Avatar servers does not support SSL @@ -237,7 +237,7 @@ void CIcqProto::icq_setidle(int bAllow) void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) { char *szCurrentStatusNote = szStatusNote ? getSettingStringUtf(NULL, DBSETTING_STATUS_NOTE, NULL) : NULL; - WORD wStatusMoodLen = 0, wStatusNoteLen = 0, wSessionDataLen = 0; + size_t wStatusMoodLen = 0, wStatusNoteLen = 0, wSessionDataLen = 0; char *szMoodData = NULL; if (szStatusNote && strcmpnull(szCurrentStatusNote, szStatusNote)) { // status note was changed, update now @@ -247,8 +247,8 @@ void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) db_free(&dbv); - wStatusNoteLen = strlennull(szStatusNote); - wStatusMoodLen = strlennull(szMoodData); + wStatusNoteLen = mir_strlen(szStatusNote); + wStatusMoodLen = mir_strlen(szMoodData); wSessionDataLen = (wStatusNoteLen ? wStatusNoteLen + 4 : 0) + 4 + wStatusMoodLen + 4; } @@ -256,7 +256,7 @@ void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) // Pack data in packet icq_packet packet; - serverPacketInit(&packet, (WORD)(18 + (wSessionDataLen ? wSessionDataLen + 4 : 0))); + serverPacketInit(&packet, 18 + (wSessionDataLen ? wSessionDataLen + 4 : 0)); packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_STATUS); packWord(&packet, 0x06); // TLV 6 packWord(&packet, 0x04); // TLV length @@ -264,18 +264,18 @@ void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) packWord(&packet, wStatus); // Status if (wSessionDataLen) { packWord(&packet, 0x1D); // TLV 1D - packWord(&packet, wSessionDataLen); // TLV length + packWord(&packet, WORD(wSessionDataLen)); // TLV length packWord(&packet, 0x02); // Item Type if (wStatusNoteLen) { packWord(&packet, 0x400 | (WORD)(wStatusNoteLen + 4)); // Flags + Item Length - packWord(&packet, wStatusNoteLen); // Text Length + packWord(&packet, WORD(wStatusNoteLen)); // Text Length packBuffer(&packet, (LPBYTE)szStatusNote, wStatusNoteLen); packWord(&packet, 0); // Encoding not specified (utf-8 is default) } else packWord(&packet, 0); // Flags + Item Length packWord(&packet, 0x0E); // Item Type - packWord(&packet, wStatusMoodLen); // Flags + Item Length + packWord(&packet, WORD(wStatusMoodLen)); // Flags + Item Length if (wStatusMoodLen) packBuffer(&packet, (LPBYTE)szMoodData, wStatusMoodLen); // Mood @@ -291,17 +291,17 @@ void CIcqProto::icq_setstatus(WORD wStatus, const char *szStatusNote) DWORD CIcqProto::icq_SendChannel1Message(DWORD dwUin, char *szUID, MCONTACT hContact, char *pszText, cookie_message_data *pCookieData) { - WORD wMessageLen = strlennull(pszText); + size_t wMessageLen = mir_strlen(pszText); DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); - WORD wPacketLength = (pCookieData->nAckType == ACKTYPE_SERVER) ? 25 : 21; + size_t wPacketLength = (pCookieData->nAckType == ACKTYPE_SERVER) ? 25 : 21; // Pack the standard header icq_packet packet; - packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUID, 1, (WORD)(wPacketLength + wMessageLen)); + packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUID, 1, wPacketLength + wMessageLen); // Pack first TLV packWord(&packet, 0x0002); // TLV(2) - packWord(&packet, (WORD)(wMessageLen + 13)); // TLV len + packWord(&packet, WORD(wMessageLen + 13)); // TLV len // Pack client features packWord(&packet, 0x0501); // TLV(501) @@ -310,10 +310,10 @@ DWORD CIcqProto::icq_SendChannel1Message(DWORD dwUin, char *szUID, MCONTACT hCon // Pack text TLV packWord(&packet, 0x0101); // TLV(2) - packWord(&packet, (WORD)(wMessageLen + 4)); // TLV len + packWord(&packet, WORD(wMessageLen + 4)); // TLV len packWord(&packet, 0x0003); // Message charset number, again copied from ICQ Lite packWord(&packet, 0x0000); // Message charset subset - packBuffer(&packet, (LPBYTE)pszText, (WORD)(wMessageLen)); // Message text + packBuffer(&packet, (LPBYTE)pszText, wMessageLen); // Message text // Pack request server ack TLV if (pCookieData->nAckType == ACKTYPE_SERVER) @@ -330,18 +330,18 @@ DWORD CIcqProto::icq_SendChannel1Message(DWORD dwUin, char *szUID, MCONTACT hCon DWORD CIcqProto::icq_SendChannel1MessageW(DWORD dwUin, char *szUID, MCONTACT hContact, WCHAR *pszText, cookie_message_data *pCookieData) { - WORD wMessageLen = WORD(strlennull(pszText) * sizeof(WCHAR)); + WORD wMessageLen = WORD(mir_wstrlen(pszText) * sizeof(WCHAR)); DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); WORD wPacketLength = (pCookieData->nAckType == ACKTYPE_SERVER) ? 26 : 22; // Pack the standard header icq_packet packet; - packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUID, 1, (WORD)(wPacketLength + wMessageLen)); + packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUID, 1, wPacketLength + wMessageLen); // Pack first TLV packWord(&packet, 0x0002); // TLV(2) - packWord(&packet, (WORD)(wMessageLen + 14)); // TLV len + packWord(&packet, WORD(wMessageLen + 14)); // TLV len // Pack client features packWord(&packet, 0x0501); // TLV(501) @@ -350,7 +350,7 @@ DWORD CIcqProto::icq_SendChannel1MessageW(DWORD dwUin, char *szUID, MCONTACT hCo // Pack text TLV packWord(&packet, 0x0101); // TLV(2) - packWord(&packet, (WORD)(wMessageLen + 4)); // TLV len + packWord(&packet, WORD(wMessageLen + 4)); // TLV len packWord(&packet, 0x0002); // Message charset number, again copied from ICQ 2003b packWord(&packet, 0x0000); // Message charset subset WCHAR *ppText = pszText; // we must convert the widestring @@ -368,17 +368,17 @@ DWORD CIcqProto::icq_SendChannel1MessageW(DWORD dwUin, char *szUID, MCONTACT hCo return dwCookie; } -DWORD CIcqProto::icq_SendChannel2Message(DWORD dwUin, MCONTACT hContact, const char *szMessage, int nBodyLen, WORD wPriority, cookie_message_data *pCookieData, char *szCap) +DWORD CIcqProto::icq_SendChannel2Message(DWORD dwUin, MCONTACT hContact, const char *szMessage, size_t nBodyLen, WORD wPriority, cookie_message_data *pCookieData, char *szCap) { DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); // Pack the standard header icq_packet packet; - packServChannel2Header(&packet, this, dwUin, (WORD)(nBodyLen + (szCap ? 53 : 11)), pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwCookie, ICQ_VERSION, (BYTE)pCookieData->bMessageType, 0, + packServChannel2Header(&packet, this, dwUin, nBodyLen + (szCap ? 53 : 11), pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwCookie, ICQ_VERSION, (BYTE)pCookieData->bMessageType, 0, wPriority, 0, 0, (BYTE)((pCookieData->nAckType == ACKTYPE_SERVER) ? 1 : 0)); - packLEWord(&packet, (WORD)(nBodyLen + 1)); // Length of message - packBuffer(&packet, (LPBYTE)szMessage, (WORD)(nBodyLen + 1)); // Message + packLEWord(&packet, WORD(nBodyLen + 1)); // Length of message + packBuffer(&packet, (LPBYTE)szMessage, nBodyLen + 1); // Message packMsgColorInfo(&packet); if (szCap) { @@ -394,15 +394,15 @@ DWORD CIcqProto::icq_SendChannel2Message(DWORD dwUin, MCONTACT hContact, const c return dwCookie; } -DWORD CIcqProto::icq_SendChannel2Contacts(DWORD dwUin, char *szUid, MCONTACT hContact, const char *pData, WORD wDataLen, const char *pNames, WORD wNamesLen, cookie_message_data *pCookieData) +DWORD CIcqProto::icq_SendChannel2Contacts(DWORD dwUin, char *szUid, MCONTACT hContact, const char *pData, size_t wDataLen, const char *pNames, size_t wNamesLen, cookie_message_data *pCookieData) { DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, pCookieData); - WORD wPacketLength = wDataLen + wNamesLen + 0x12; + size_t wPacketLength = wDataLen + wNamesLen + 0x12; // Pack the standard header icq_packet packet; - packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUid, 2, (WORD)(wPacketLength + ((pCookieData->nAckType == ACKTYPE_SERVER) ? 0x22 : 0x1E))); + packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, szUid, 2, wPacketLength + ((pCookieData->nAckType == ACKTYPE_SERVER) ? 0x22 : 0x1E)); packServTLV5HeaderBasic(&packet, wPacketLength, pCookieData->dwMsgID1, pCookieData->dwMsgID2, 0, MCAP_CONTACTS); @@ -420,22 +420,22 @@ DWORD CIcqProto::icq_SendChannel2Contacts(DWORD dwUin, char *szUid, MCONTACT hCo return dwCookie; } -DWORD CIcqProto::icq_SendChannel4Message(DWORD dwUin, MCONTACT hContact, BYTE bMsgType, WORD wMsgLen, const char *szMsg, cookie_message_data *pCookieData) +DWORD CIcqProto::icq_SendChannel4Message(DWORD dwUin, MCONTACT hContact, BYTE bMsgType, size_t wMsgLen, const char *szMsg, cookie_message_data *pCookieData) { DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); - WORD wPacketLength = (pCookieData->nAckType == ACKTYPE_SERVER) ? 28 : 24; + size_t wPacketLength = (pCookieData->nAckType == ACKTYPE_SERVER) ? 28 : 24; // Pack the standard header icq_packet packet; - packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, NULL, 4, (WORD)(wPacketLength + wMsgLen)); + packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, NULL, 4, wPacketLength + wMsgLen); // Pack first TLV packWord(&packet, 0x05); // TLV(5) - packWord(&packet, (WORD)(wMsgLen + 16)); // TLV len + packWord(&packet, WORD(wMsgLen + 16)); // TLV len packLEDWord(&packet, m_dwLocalUIN); // My UIN packByte(&packet, bMsgType); // Message type packByte(&packet, 0); // Message flags - packLEWord(&packet, wMsgLen); // Message length + packLEWord(&packet, WORD(wMsgLen)); // Message length packBuffer(&packet, (LPBYTE)szMsg, wMsgLen); // Message text packMsgColorInfo(&packet); @@ -483,18 +483,19 @@ void CIcqProto::sendOwnerInfoRequest(void) sendServPacket(&packet); } -DWORD CIcqProto::sendUserInfoMultiRequest(BYTE *pRequestData, WORD wDataLen, int nItems) +DWORD CIcqProto::sendUserInfoMultiRequest(BYTE *pRequestData, size_t dataLen, int nItems) { cookie_directory_data *pCookieData = (cookie_directory_data*)SAFE_MALLOC(sizeof(cookie_directory_data)); - if (!pCookieData) return 0; // Failure - pCookieData->bRequestType = DIRECTORYREQUEST_INFOMULTI; + if (!pCookieData) + return 0; // Failure + pCookieData->bRequestType = DIRECTORYREQUEST_INFOMULTI; DWORD dwCookie = AllocateCookie(CKT_DIRECTORY_QUERY, 0, NULL, (void*)pCookieData); icq_packet packet; - packServIcqDirectoryHeader(&packet, this, wDataLen + 2, META_DIRECTORY_QUERY, DIRECTORY_QUERY_MULTI_INFO, (WORD)dwCookie); + packServIcqDirectoryHeader(&packet, this, dataLen + 2, META_DIRECTORY_QUERY, DIRECTORY_QUERY_MULTI_INFO, (WORD)dwCookie); packWord(&packet, nItems); - packBuffer(&packet, pRequestData, wDataLen); + packBuffer(&packet, pRequestData, dataLen); sendServPacket(&packet); @@ -562,10 +563,10 @@ DWORD CIcqProto::icq_sendGetAimProfileServ(MCONTACT hContact, char* szUid) pCookieData->bRequestType = REQUESTTYPE_PROFILE; DWORD dwCookie = AllocateCookie(CKT_FAMILYSPECIAL, ICQ_LOCATION_REQ_USER_INFO, hContact, (void*)pCookieData); - BYTE bUIDlen = strlennull(szUid); + BYTE bUIDlen = (BYTE)mir_strlen(szUid); icq_packet packet; - serverPacketInit(&packet, (WORD)(13 + bUIDlen)); + serverPacketInit(&packet, 13 + bUIDlen); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_REQ_USER_INFO, 0, dwCookie); packWord(&packet, 0x01); // request profile info packByte(&packet, bUIDlen); @@ -629,13 +630,13 @@ DWORD CIcqProto::icq_sendGetAwayMsgServExt(MCONTACT hContact, DWORD dwUin, char DWORD CIcqProto::icq_sendGetAimAwayMsgServ(MCONTACT hContact, char *szUID, int type) { - BYTE bUIDlen = strlennull(szUID); + BYTE bUIDlen = (BYTE)mir_strlen(szUID); cookie_message_data *pCookieData = CreateMessageCookie(MTYPE_AUTOAWAY, (byte)type); DWORD dwCookie = AllocateCookie(CKT_MESSAGE, 0, hContact, (void*)pCookieData); icq_packet packet; - serverPacketInit(&packet, (WORD)(13 + bUIDlen)); + serverPacketInit(&packet, 13 + bUIDlen); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_REQ_USER_INFO, 0, dwCookie); packWord(&packet, 0x03); packUID(&packet, 0, szUID); @@ -649,7 +650,7 @@ DWORD CIcqProto::icq_sendGetAimAwayMsgServ(MCONTACT hContact, char *szUID, int t void CIcqProto::icq_sendSetAimAwayMsgServ(const char *szMsg) { icq_packet packet; - WORD wMsgLen = strlennull(szMsg); + size_t wMsgLen = mir_strlen(szMsg); DWORD dwCookie = GenerateCookie(ICQ_LOCATION_SET_USER_INFO); @@ -658,7 +659,7 @@ void CIcqProto::icq_sendSetAimAwayMsgServ(const char *szMsg) if (IsUSASCII(szMsg, wMsgLen)) { const char* fmt = "text/x-aolrtf; charset=\"us-ascii\""; - const WORD fmtlen = (WORD)strlen(fmt); + size_t fmtlen = strlen(fmt); serverPacketInit(&packet, 23 + wMsgLen + fmtlen); packFNACHeader(&packet, ICQ_LOCATION_FAMILY, ICQ_LOCATION_SET_USER_INFO, 0, dwCookie); @@ -668,10 +669,10 @@ void CIcqProto::icq_sendSetAimAwayMsgServ(const char *szMsg) } else { const char* fmt = "text/x-aolrtf; charset=\"unicode-2-0\""; - const WORD fmtlen = (WORD)strlen(fmt); + size_t fmtlen = strlen(fmt); WCHAR *szMsgW = make_unicode_string(szMsg); - wMsgLen = (WORD)strlennull(szMsgW) * sizeof(WCHAR); + wMsgLen = mir_wstrlen(szMsgW) * sizeof(WCHAR); WCHAR *szMsgW2 = (WCHAR*)alloca(wMsgLen), *szMsgW3 = szMsgW; unpackWideString((BYTE**)&szMsgW3, szMsgW2, wMsgLen); @@ -696,8 +697,6 @@ void CIcqProto::icq_sendSetAimAwayMsgServ(const char *szMsg) void CIcqProto::icq_sendFileSendServv7(filetransfer* ft, const char *szFiles) { - icq_packet packet; - WORD wDescrLen = 0, wFilesLen = 0; char *szFilesAnsi = NULL, *szDescrAnsi = NULL; if (!utf8_decode(szFiles, &szFilesAnsi)) @@ -706,16 +705,17 @@ void CIcqProto::icq_sendFileSendServv7(filetransfer* ft, const char *szFiles) if (!utf8_decode(ft->szDescription, &szDescrAnsi)) szDescrAnsi = _strdup(ft->szDescription); // Legacy fix - wFilesLen = strlennull(szFilesAnsi); - wDescrLen = strlennull(szDescrAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi); + size_t wDescrLen = mir_strlen(szDescrAnsi); - packServChannel2Header(&packet, this, ft->dwUin, (WORD)(18 + wDescrLen + wFilesLen), ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, ft->dwCookie, ICQ_VERSION, MTYPE_FILEREQ, 0, 1, 0, 1, 1); + icq_packet packet; + packServChannel2Header(&packet, this, ft->dwUin, 18 + wDescrLen + wFilesLen, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, ft->dwCookie, ICQ_VERSION, MTYPE_FILEREQ, 0, 1, 0, 1, 1); - packLEWord(&packet, (WORD)(wDescrLen + 1)); - packBuffer(&packet, (LPBYTE)szDescrAnsi, (WORD)(wDescrLen + 1)); + packLEWord(&packet, WORD(wDescrLen + 1)); + packBuffer(&packet, (LPBYTE)szDescrAnsi, wDescrLen + 1); packLEDWord(&packet, 0); // unknown - packLEWord(&packet, (WORD)(wFilesLen + 1)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen + 1)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen + 1); packLEDWord(&packet, ft->dwTotalSize); packLEDWord(&packet, 0); // unknown @@ -728,7 +728,6 @@ void CIcqProto::icq_sendFileSendServv7(filetransfer* ft, const char *szFiles) void CIcqProto::icq_sendFileSendServv8(filetransfer* ft, const char *szFiles, int nAckType) { icq_packet packet; - WORD wDescrLen = 0, wFilesLen = 0; char *szFilesAnsi = NULL, *szDescrAnsi = NULL; if (!utf8_decode(szFiles, &szFilesAnsi)) @@ -737,34 +736,34 @@ void CIcqProto::icq_sendFileSendServv8(filetransfer* ft, const char *szFiles, in if (!utf8_decode(ft->szDescription, &szDescrAnsi)) szDescrAnsi = _strdup(ft->szDescription); // Legacy fix - wFilesLen = strlennull(szFilesAnsi); - wDescrLen = strlennull(szDescrAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi); + size_t wDescrLen = mir_strlen(szDescrAnsi); // 202 + UIN len + file description (no null) + file name (null included) // Packet size = Flap length + 4 - WORD wFlapLen = 178 + wDescrLen + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); + size_t wFlapLen = 178 + wDescrLen + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); packServMsgSendHeader(&packet, ft->dwCookie, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, ft->dwUin, NULL, 2, wFlapLen); // TLV(5) header - packServTLV5HeaderMsg(&packet, (WORD)(138 + wDescrLen + wFilesLen), ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, 1); + packServTLV5HeaderMsg(&packet, 138 + wDescrLen + wFilesLen, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, 1); // Port & IP information packServDCInfo(&packet, this, FALSE); // TLV(0x2711) header - packServTLV2711Header(&packet, (WORD)ft->dwCookie, ICQ_VERSION, MTYPE_PLUGIN, 0, (WORD)MirandaStatusToIcq(m_iStatus), 0x100, 69 + wDescrLen + wFilesLen); + packServTLV2711Header(&packet, (WORD)ft->dwCookie, ICQ_VERSION, MTYPE_PLUGIN, 0, MirandaStatusToIcq(m_iStatus), 0x100, 69 + wDescrLen + wFilesLen); packEmptyMsg(&packet); // Message (unused) packPluginTypeId(&packet, MTYPE_FILEREQ); - packLEDWord(&packet, (WORD)(18 + wDescrLen + wFilesLen + 1)); // Remaining length - packLEDWord(&packet, wDescrLen); // Description + packLEDWord(&packet, WORD(18 + wDescrLen + wFilesLen + 1)); // Remaining length + packLEDWord(&packet, DWORD(wDescrLen)); // Description packBuffer(&packet, (LPBYTE)szDescrAnsi, wDescrLen); packWord(&packet, 0x8c82); // Unknown (port?), seen 0x80F6 packWord(&packet, 0x0222); // Unknown, seen 0x2e01 - packLEWord(&packet, (WORD)(wFilesLen + 1)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen + 1)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen + 1); packLEDWord(&packet, ft->dwTotalSize); packLEDWord(&packet, 0x0008c82); // Unknown, (seen 0xf680 ~33000) @@ -796,16 +795,16 @@ void CIcqProto::icq_sendFileAcceptServv8(DWORD dwUin, DWORD TS1, DWORD TS2, DWOR if (!utf8_decode(szDescr, &szDescrAnsi)) szDescrAnsi = _strdup(szDescr); // Legacy fix - WORD wDescrLen = strlennull(szDescrAnsi); - WORD wFilesLen = strlennull(szFilesAnsi); + size_t wDescrLen = mir_strlen(szDescrAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi); // 202 + UIN len + file description (no null) + file name (null included) // Packet size = Flap length + 4 - WORD wFlapLen = 178 + wDescrLen + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); + size_t wFlapLen = 178 + wDescrLen + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); packServMsgSendHeader(&packet, dwCookie, TS1, TS2, dwUin, NULL, 2, wFlapLen); // TLV(5) header - packServTLV5HeaderMsg(&packet, (WORD)(138 + wDescrLen + wFilesLen), TS1, TS2, 2); + packServTLV5HeaderMsg(&packet, 138 + wDescrLen + wFilesLen, TS1, TS2, 2); // Port & IP information packServDCInfo(&packet, this, !accepted); @@ -817,13 +816,13 @@ void CIcqProto::icq_sendFileAcceptServv8(DWORD dwUin, DWORD TS1, DWORD TS2, DWOR packPluginTypeId(&packet, MTYPE_FILEREQ); - packLEDWord(&packet, (WORD)(18 + wDescrLen + wFilesLen + 1)); // Remaining length - packLEDWord(&packet, wDescrLen); // Description + packLEDWord(&packet, DWORD(18 + wDescrLen + wFilesLen + 1)); // Remaining length + packLEDWord(&packet, DWORD(wDescrLen)); // Description packBuffer(&packet, (LPBYTE)szDescrAnsi, wDescrLen); packWord(&packet, wPort); // Port packWord(&packet, 0x00); // Unknown - packLEWord(&packet, (WORD)(wFilesLen + 1)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen + 1)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen + 1); packLEDWord(&packet, dwTotalSize); packLEDWord(&packet, (DWORD)wPort); // Unknown @@ -855,16 +854,16 @@ void CIcqProto::icq_sendFileAcceptServv7(DWORD dwUin, DWORD TS1, DWORD TS2, DWOR if (!utf8_decode(szDescr, &szDescrAnsi)) szDescrAnsi = _strdup(szDescr); // Legacy fix - WORD wDescrLen = strlennull(szDescrAnsi); - WORD wFilesLen = strlennull(szFilesAnsi); + size_t wDescrLen = mir_strlen(szDescrAnsi); + size_t wFilesLen = mir_strlen(szFilesAnsi); // 150 + UIN len + file description (with null) + file name (2 nulls) // Packet size = Flap length + 4 - WORD wFlapLen = 127 + wDescrLen + 1 + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); + size_t wFlapLen = 127 + wDescrLen + 1 + wFilesLen + (nAckType == ACKTYPE_SERVER ? 4 : 0); packServMsgSendHeader(&packet, dwCookie, TS1, TS2, dwUin, NULL, 2, wFlapLen); // TLV(5) header - packServTLV5HeaderMsg(&packet, (WORD)(88 + wDescrLen + wFilesLen), TS1, TS2, 2); + packServTLV5HeaderMsg(&packet, 88 + wDescrLen + wFilesLen, TS1, TS2, 2); // Port & IP information packServDCInfo(&packet, this, !accepted); @@ -872,12 +871,12 @@ void CIcqProto::icq_sendFileAcceptServv7(DWORD dwUin, DWORD TS1, DWORD TS2, DWOR // TLV(0x2711) header packServTLV2711Header(&packet, (WORD)dwCookie, ICQ_VERSION, MTYPE_FILEREQ, 0, (WORD)(accepted ? 0 : 1), 0, 19 + wDescrLen + wFilesLen); // - packLEWord(&packet, (WORD)(wDescrLen + 1)); // Description - packBuffer(&packet, (LPBYTE)szDescrAnsi, (WORD)(wDescrLen + 1)); + packLEWord(&packet, WORD(wDescrLen + 1)); // Description + packBuffer(&packet, (LPBYTE)szDescrAnsi, wDescrLen + 1); packWord(&packet, wPort); // Port packWord(&packet, 0x00); // Unknown - packLEWord(&packet, (WORD)(wFilesLen + 2)); - packBuffer(&packet, (LPBYTE)szFilesAnsi, (WORD)(wFilesLen + 1)); + packLEWord(&packet, WORD(wFilesLen + 2)); + packBuffer(&packet, (LPBYTE)szFilesAnsi, wFilesLen + 1); packByte(&packet, 0); packLEDWord(&packet, dwTotalSize); packLEDWord(&packet, (DWORD)wPort); // Unknown @@ -939,23 +938,21 @@ void CIcqProto::icq_sendAwayMsgReplyServ(DWORD dwUin, DWORD dwMsgID1, DWORD dwMs wReplyVersion = 9; } else { // only v9 protocol supports UTF-8 mode messagees - WORD wMsgLen = strlennull(*szMsg) + 1; + size_t wMsgLen = mir_strlen(*szMsg) + 1; char *szAnsiMsg = (char*)_alloca(wMsgLen); utf8_decode_static(*szMsg, szAnsiMsg, wMsgLen); pszMsg = szAnsiMsg; } - WORD wMsgLen = strlennull(pszMsg); - // limit msg len to max snac size - we get disconnected if exceeded + size_t wMsgLen = mir_strlen(pszMsg); if (wMsgLen > MAX_MESSAGESNACSIZE) wMsgLen = MAX_MESSAGESNACSIZE; icq_packet packet; - - packServAdvancedMsgReply(&packet, dwUin, NULL, dwMsgID1, dwMsgID2, wCookie, wReplyVersion, msgType, 3, (WORD)(wMsgLen + 3)); - packLEWord(&packet, (WORD)(wMsgLen + 1)); + packServAdvancedMsgReply(&packet, dwUin, NULL, dwMsgID1, dwMsgID2, wCookie, wReplyVersion, msgType, 3, wMsgLen + 3); + packLEWord(&packet, WORD(wMsgLen + 1)); packBuffer(&packet, (LPBYTE)pszMsg, wMsgLen); packByte(&packet, 0); @@ -983,34 +980,32 @@ void CIcqProto::icq_sendAwayMsgReplyServExt(DWORD dwUin, char *szUID, DWORD dwMs else { // only v9 protocol supports UTF-8 mode messagees wReplyVersion = 8; - WORD wMsgLen = strlennull(*szMsg) + 1; + size_t wMsgLen = mir_strlen(*szMsg) + 1; char *szAnsiMsg = (char*)_alloca(wMsgLen); utf8_decode_static(*szMsg, szAnsiMsg, wMsgLen); pszMsg = szAnsiMsg; } // convert to HTML - char *mng = MangleXml(pszMsg, strlennull(pszMsg)); - pszMsg = (char*)SAFE_MALLOC(strlennull(mng) + 28); + char *mng = MangleXml(pszMsg, mir_strlen(pszMsg)); + pszMsg = (char*)SAFE_MALLOC(mir_strlen(mng) + 28); strcpy(pszMsg, ""); /// TODO: add support for RTL & user customizable font strcat(pszMsg, mng); SAFE_FREE(&mng); strcat(pszMsg, ""); - WORD wMsgLen = strlennull(pszMsg); - // limit msg len to max snac size - we get disconnected if exceeded /// FIXME: correct HTML cutting + size_t wMsgLen = mir_strlen(pszMsg); if (wMsgLen > MAX_MESSAGESNACSIZE) wMsgLen = MAX_MESSAGESNACSIZE; icq_packet packet; - packServAdvancedMsgReply(&packet, dwUin, szUID, dwMsgID1, dwMsgID2, wCookie, wReplyVersion, MTYPE_PLUGIN, 0, wMsgLen + 27 + getPluginTypeIdLen(msgType)); packLEWord(&packet, 0); // Message size packPluginTypeId(&packet, msgType); - packLEDWord(&packet, wMsgLen + 21); - packLEDWord(&packet, wMsgLen); + packLEDWord(&packet, DWORD(wMsgLen + 21)); + packLEDWord(&packet, DWORD(wMsgLen)); packBuffer(&packet, (LPBYTE)pszMsg, wMsgLen); packLEDWord(&packet, 0x0D); @@ -1087,7 +1082,7 @@ DWORD CIcqProto::SearchByUin(DWORD dwUin) DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, const char *pszLastName, WORD wPage) { // use directory search like ICQ6 does - WORD wInfoLen = 0; + size_t wInfoLen = 0; icq_packet pBuffer; // I reuse the ICQ packet type as a generic buffer // I should be ashamed! ;) if (m_bLegacyFix) { @@ -1105,9 +1100,9 @@ DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, co if (!utf8_decode(pszLastName, &pszLastNameAnsi)) pszLastNameAnsi = _strdup(pszLastName); - WORD wNickLen = strlennull(pszNickAnsi); - WORD wFirstLen = strlennull(pszFirstNameAnsi); - WORD wLastLen = strlennull(pszLastNameAnsi); + size_t wNickLen = mir_strlen(pszNickAnsi); + size_t wFirstLen = mir_strlen(pszFirstNameAnsi); + size_t wLastLen = mir_strlen(pszLastNameAnsi); _ASSERTE(wFirstLen || wLastLen || wNickLen); @@ -1122,9 +1117,9 @@ DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, co // Initialize our handy data buffer pBuffer.wPlace = 0; pBuffer.pData = (BYTE *)_alloca(wInfoLen); - pBuffer.wLen = wInfoLen; + pBuffer.wLen = WORD(wInfoLen); - int pBufferPos = 0; + size_t pBufferPos = 0; // Pack the search details if (wFirstLen > 0) @@ -1144,9 +1139,9 @@ DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, co return sendTLVSearchPacket(SEARCHTYPE_NAMES, (char*)pBuffer.pData, META_SEARCH_GENERIC, wInfoLen, FALSE); } - WORD wNickLen = strlennull(pszNick); - WORD wFirstLen = strlennull(pszFirstName); - WORD wLastLen = strlennull(pszLastName); + size_t wNickLen = mir_strlen(pszNick); + size_t wFirstLen = mir_strlen(pszFirstName); + size_t wLastLen = mir_strlen(pszLastName); _ASSERTE(wFirstLen || wLastLen || wNickLen); @@ -1161,7 +1156,7 @@ DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, co // Initialize our handy data buffer pBuffer.wPlace = 0; pBuffer.pData = (BYTE *)_alloca(wInfoLen); - pBuffer.wLen = wInfoLen; + pBuffer.wLen = WORD(wInfoLen); // Pack the search details if (wNickLen) @@ -1182,17 +1177,17 @@ DWORD CIcqProto::SearchByNames(const char *pszNick, const char *pszFirstName, co DWORD CIcqProto::SearchByMail(const char* pszEmail) { - WORD wEmailLen = strlennull(pszEmail); + size_t wEmailLen = mir_strlen(pszEmail); _ASSERTE(wEmailLen); if (wEmailLen <= 0) return 0; // Calculate data size - WORD wInfoLen = wEmailLen + 7; + size_t wInfoLen = wEmailLen + 7; // Initialize our handy data buffer BYTE *pBuffer = (BYTE *)_alloca(wInfoLen); - int pBufferPos = 0; + size_t pBufferPos = 0; // Pack the search details packLETLVLNTS(&pBuffer, &pBufferPos, pszEmail, TLV_EMAIL); @@ -1201,7 +1196,7 @@ DWORD CIcqProto::SearchByMail(const char* pszEmail) return sendTLVSearchPacket(SEARCHTYPE_EMAIL, (char*)pBuffer, META_SEARCH_EMAIL, wInfoLen, FALSE); } -DWORD CIcqProto::sendDirectorySearchPacket(const BYTE *pSearchData, WORD wDataLen, WORD wPage, BOOL bOnlineUsersOnly) +DWORD CIcqProto::sendDirectorySearchPacket(const BYTE *pSearchData, size_t wDataLen, WORD wPage, BOOL bOnlineUsersOnly) { _ASSERTE(pSearchData); _ASSERTE(wDataLen >= 4); @@ -1223,7 +1218,7 @@ DWORD CIcqProto::sendDirectorySearchPacket(const BYTE *pSearchData, WORD wDataLe // Pack search data packWord(&packet, 0x0001); - packWord(&packet, wDataLen + (bOnlineUsersOnly ? 6 : 0)); + packWord(&packet, WORD(wDataLen + (bOnlineUsersOnly ? 6 : 0))); packBuffer(&packet, pSearchData, wDataLen); if (bOnlineUsersOnly) // Pack "Online users only" flag @@ -1234,7 +1229,7 @@ DWORD CIcqProto::sendDirectorySearchPacket(const BYTE *pSearchData, WORD wDataLe return dwCookie; } -DWORD CIcqProto::sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSearchType, WORD wInfoLen, BOOL bOnlineUsersOnly) +DWORD CIcqProto::sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSearchType, size_t wInfoLen, BOOL bOnlineUsersOnly) { _ASSERTE(pSearchDataBuf); _ASSERTE(wInfoLen >= 4); @@ -1248,7 +1243,7 @@ DWORD CIcqProto::sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSea // Pack headers icq_packet packet; - packServIcqExtensionHeader(&packet, this, (WORD)(wInfoLen + (wSearchType == META_SEARCH_GENERIC ? 7 : 2)), CLI_META_INFO_REQ, (WORD)dwCookie); + packServIcqExtensionHeader(&packet, this, wInfoLen + (wSearchType == META_SEARCH_GENERIC ? 7 : 2), CLI_META_INFO_REQ, (WORD)dwCookie); // Pack search type packLEWord(&packet, wSearchType); @@ -1266,7 +1261,7 @@ DWORD CIcqProto::sendTLVSearchPacket(BYTE bType, char* pSearchDataBuf, WORD wSea return dwCookie; } -DWORD CIcqProto::icq_sendAdvancedSearchServ(BYTE* fieldsBuffer, int bufferLen) +DWORD CIcqProto::icq_sendAdvancedSearchServ(BYTE* fieldsBuffer, size_t bufferLen) { cookie_search *pCookie = (cookie_search*)SAFE_MALLOC(sizeof(cookie_search)); if (pCookie == 0) @@ -1276,8 +1271,8 @@ DWORD CIcqProto::icq_sendAdvancedSearchServ(BYTE* fieldsBuffer, int bufferLen) DWORD dwCookie = AllocateCookie(CKT_SEARCH, 0, 0, pCookie); icq_packet packet; - packServIcqExtensionHeader(&packet, this, (WORD)bufferLen, CLI_META_INFO_REQ, (WORD)dwCookie); - packBuffer(&packet, (LPBYTE)fieldsBuffer, (WORD)bufferLen); + packServIcqExtensionHeader(&packet, this, bufferLen, CLI_META_INFO_REQ, (WORD)dwCookie); + packBuffer(&packet, (LPBYTE)fieldsBuffer, bufferLen); sendServPacket(&packet); return dwCookie; @@ -1299,9 +1294,9 @@ DWORD CIcqProto::icq_searchAimByEmail(const char* pszEmail, DWORD dwSearchId) pCookie->szObject = null_strdup(pszEmail); DWORD dwCookie = AllocateCookie(CKT_SEARCH, ICQ_LOOKUP_REQUEST, 0, pCookie); - WORD wEmailLen = strlennull(pszEmail); + size_t wEmailLen = mir_strlen(pszEmail); icq_packet packet; - serverPacketInit(&packet, (WORD)(10 + wEmailLen)); + serverPacketInit(&packet, 10 + wEmailLen); packFNACHeader(&packet, ICQ_LOOKUP_FAMILY, ICQ_LOOKUP_REQUEST, 0, dwCookie); packBuffer(&packet, (LPBYTE)pszEmail, wEmailLen); @@ -1312,20 +1307,20 @@ DWORD CIcqProto::icq_searchAimByEmail(const char* pszEmail, DWORD dwSearchId) DWORD CIcqProto::icq_changeUserPasswordServ(const char *szPassword) { - WORD wPasswordLen = strlennull(szPassword); + size_t wPasswordLen = mir_strlen(szPassword); DWORD dwCookie = GenerateCookie(0); icq_packet packet; - packServIcqExtensionHeader(&packet, this, (WORD)(wPasswordLen + 4), CLI_META_INFO_REQ, (WORD)dwCookie, ICQ_META_SRV_UPDATE); + packServIcqExtensionHeader(&packet, this, wPasswordLen + 4, CLI_META_INFO_REQ, (WORD)dwCookie, ICQ_META_SRV_UPDATE); packLEWord(&packet, META_SET_PASSWORD_REQ); - packLEWord(&packet, wPasswordLen); + packLEWord(&packet, WORD(wPasswordLen)); packBuffer(&packet, (BYTE*)szPassword, wPasswordLen); sendServPacket(&packet); return dwCookie; } -DWORD CIcqProto::icq_changeUserDirectoryInfoServ(const BYTE *pData, WORD wDataLen, BYTE bRequestType) +DWORD CIcqProto::icq_changeUserDirectoryInfoServ(const BYTE *pData, size_t wDataLen, BYTE bRequestType) { cookie_directory_data *pCookieData = (cookie_directory_data*)SAFE_MALLOC(sizeof(cookie_directory_data)); pCookieData->bRequestType = bRequestType; @@ -1334,7 +1329,7 @@ DWORD CIcqProto::icq_changeUserDirectoryInfoServ(const BYTE *pData, WORD wDataLe icq_packet packet; packServIcqDirectoryHeader(&packet, this, wDataLen + 4, META_DIRECTORY_UPDATE, DIRECTORY_SET_INFO, (WORD)dwCookie, ICQ_META_SRV_UPDATE); packWord(&packet, 0x0003); - packWord(&packet, wDataLen); + packWord(&packet, WORD(wDataLen)); packBuffer(&packet, pData, wDataLen); sendServPacket(&packet); @@ -1347,15 +1342,12 @@ DWORD CIcqProto::icq_sendSMSServ(const char *szPhoneNumber, const char *szMsg) WORD wBufferLen; char *szBuffer = NULL; char szTime[30]; - time_t now; - int nBufferSize; - - now = time(NULL); + time_t now = time(NULL); strftime(szTime, sizeof(szTime), "%a, %d %b %Y %H:%M:%S GMT", gmtime(&now)); /* Sun, 00 Jan 0000 00:00:00 GMT */ char *szMyNick = null_strdup((char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)(HANDLE)NULL, 0)); - nBufferSize = 1 + strlennull(szMyNick) + strlennull(szPhoneNumber) + strlennull(szMsg) + sizeof("1252utf80000000000Yes"); + size_t nBufferSize = 1 + mir_strlen(szMyNick) + mir_strlen(szPhoneNumber) + mir_strlen(szMsg) + sizeof("1252utf80000000000Yes"); if (szBuffer = (char *)_alloca(nBufferSize)) { wBufferLen = mir_snprintf(szBuffer, nBufferSize, @@ -1390,7 +1382,7 @@ DWORD CIcqProto::icq_sendSMSServ(const char *szPhoneNumber, const char *szMsg) dwCookie = GenerateCookie(0); icq_packet packet; - packServIcqExtensionHeader(&packet, this, (WORD)(wBufferLen + 27), CLI_META_INFO_REQ, (WORD)dwCookie); + packServIcqExtensionHeader(&packet, this, wBufferLen + 27, CLI_META_INFO_REQ, (WORD)dwCookie); packWord(&packet, 0x8214); /* send sms */ packWord(&packet, 1); packWord(&packet, 0x16); @@ -1399,8 +1391,8 @@ DWORD CIcqProto::icq_sendSMSServ(const char *szPhoneNumber, const char *szMsg) packDWord(&packet, 0); packDWord(&packet, 0); packWord(&packet, 0); - packWord(&packet, (WORD)(wBufferLen + 1)); - packBuffer(&packet, (LPBYTE)szBuffer, (WORD)(1 + wBufferLen)); + packWord(&packet, WORD(wBufferLen + 1)); + packBuffer(&packet, (LPBYTE)szBuffer, wBufferLen+1); sendServPacket(&packet); } @@ -1415,7 +1407,7 @@ void CIcqProto::icq_sendGenericContact(DWORD dwUin, const char *szUid, WORD wFam int nUinLen = getUIDLen(dwUin, szUid); icq_packet packet; - serverPacketInit(&packet, (WORD)(nUinLen + 11)); + serverPacketInit(&packet, nUinLen + 11); packFNACHeader(&packet, wFamily, wSubType); packUID(&packet, dwUin, szUid); @@ -1499,7 +1491,7 @@ void CIcqProto::icq_sendChangeVisInvis(MCONTACT hContact, DWORD dwUin, char* szU int nUinLen = getUIDLen(dwUin, szUID); icq_packet packet; - serverPacketInit(&packet, (WORD)(nUinLen + 11)); + serverPacketInit(&packet, nUinLen + 11); packFNACHeader(&packet, ICQ_BOS_FAMILY, wSnac); packUID(&packet, dwUin, szUID); sendServPacket(&packet); @@ -1524,13 +1516,13 @@ void CIcqProto::icq_sendGrantAuthServ(DWORD dwUin, const char *szUid, const char // Prepare custom utf-8 message char *szUtfMsg = ansi_to_utf8(szMsg); - WORD nMsglen = strlennull(szUtfMsg); + size_t nMsglen = mir_strlen(szUtfMsg); icq_packet packet; - serverPacketInit(&packet, (WORD)(15 + nUinlen + nMsglen)); + serverPacketInit(&packet, 15 + nUinlen + nMsglen); packFNACHeader(&packet, ICQ_LISTS_FAMILY, ICQ_LISTS_GRANTAUTH); packUID(&packet, dwUin, szUid); - packWord(&packet, nMsglen); + packWord(&packet, WORD(nMsglen)); packBuffer(&packet, (LPBYTE)szUtfMsg, nMsglen); packWord(&packet, 0); @@ -1542,13 +1534,13 @@ void CIcqProto::icq_sendGrantAuthServ(DWORD dwUin, const char *szUid, const char void CIcqProto::icq_sendAuthReqServ(DWORD dwUin, char *szUid, const char *szMsg) { BYTE nUinlen = getUIDLen(dwUin, szUid); - WORD nMsglen = strlennull(szMsg); + size_t nMsglen = mir_strlen(szMsg); icq_packet packet; - serverPacketInit(&packet, (WORD)(15 + nUinlen + nMsglen)); + serverPacketInit(&packet, 15 + nUinlen + nMsglen); packFNACHeader(&packet, ICQ_LISTS_FAMILY, ICQ_LISTS_REQUESTAUTH); packUID(&packet, dwUin, szUid); - packWord(&packet, nMsglen); + packWord(&packet, WORD(nMsglen)); packBuffer(&packet, (LPBYTE)szMsg, nMsglen); packWord(&packet, 0); @@ -1561,14 +1553,14 @@ void CIcqProto::icq_sendAuthResponseServ(DWORD dwUin, char* szUid, int auth, con // Prepare custom utf-8 reason char *szUtfReason = tchar_to_utf8(szReason); - WORD nReasonLen = strlennull(szUtfReason); + size_t nReasonLen = mir_strlen(szUtfReason); icq_packet packet; - serverPacketInit(&packet, (WORD)(16 + nUinLen + nReasonLen)); + serverPacketInit(&packet, 16 + nUinLen + nReasonLen); packFNACHeader(&packet, ICQ_LISTS_FAMILY, ICQ_LISTS_CLI_AUTHRESPONSE); packUID(&packet, dwUin, szUid); packByte(&packet, (BYTE)auth); - packWord(&packet, nReasonLen); + packWord(&packet, WORD(nReasonLen)); packBuffer(&packet, (LPBYTE)szUtfReason, nReasonLen); packWord(&packet, 0); @@ -1594,15 +1586,15 @@ void CIcqProto::icq_sendYouWereAddedServ(DWORD dwUin, DWORD dwMyUin) sendServPacket(&packet); } -void CIcqProto::icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBody, int nBodyLen, cookie_message_data *pCookieData) +void CIcqProto::icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBody, size_t nBodyLen, cookie_message_data *pCookieData) { - WORD wCoreLen = 11 + getPluginTypeIdLen(pCookieData->bMessageType) + nBodyLen; + size_t wCoreLen = 11 + getPluginTypeIdLen(pCookieData->bMessageType) + nBodyLen; icq_packet packet; - packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, NULL, 2, (WORD)(99 + wCoreLen)); + packServMsgSendHeader(&packet, dwCookie, pCookieData->dwMsgID1, pCookieData->dwMsgID2, dwUin, NULL, 2, 99 + wCoreLen); // TLV(5) header - packServTLV5HeaderMsg(&packet, (WORD)(55 + wCoreLen), pCookieData->dwMsgID1, pCookieData->dwMsgID2, 1); + packServTLV5HeaderMsg(&packet, 55 + wCoreLen, pCookieData->dwMsgID1, pCookieData->dwMsgID2, 1); // TLV(0x2711) header packServTLV2711Header(&packet, (WORD)dwCookie, ICQ_VERSION, MTYPE_PLUGIN, 0, 0, 0x100, wCoreLen); @@ -1611,9 +1603,9 @@ void CIcqProto::icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBo packPluginTypeId(&packet, pCookieData->bMessageType); - packLEDWord(&packet, nBodyLen + 4); - packLEDWord(&packet, nBodyLen); - packBuffer(&packet, (LPBYTE)szBody, (WORD)nBodyLen); + packLEDWord(&packet, DWORD(nBodyLen + 4)); + packLEDWord(&packet, DWORD(nBodyLen)); + packBuffer(&packet, (LPBYTE)szBody, nBodyLen); // Pack request server ack TLV packDWord(&packet, 0x00030000); // TLV(3) @@ -1622,18 +1614,18 @@ void CIcqProto::icq_sendXtrazRequestServ(DWORD dwUin, DWORD dwCookie, char* szBo sendServPacket(&packet); } -void CIcqProto::icq_sendXtrazResponseServ(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szBody, int nBodyLen, int nType) +void CIcqProto::icq_sendXtrazResponseServ(DWORD dwUin, DWORD dwMID, DWORD dwMID2, WORD wCookie, char* szBody, size_t nBodyLen, int nType) { icq_packet packet; - packServAdvancedMsgReply(&packet, dwUin, NULL, dwMID, dwMID2, wCookie, ICQ_VERSION, MTYPE_PLUGIN, 0, (WORD)(getPluginTypeIdLen(nType) + 11 + nBodyLen)); + packServAdvancedMsgReply(&packet, dwUin, NULL, dwMID, dwMID2, wCookie, ICQ_VERSION, MTYPE_PLUGIN, 0, getPluginTypeIdLen(nType) + 11 + nBodyLen); packEmptyMsg(&packet); packPluginTypeId(&packet, nType); - packLEDWord(&packet, nBodyLen + 4); - packLEDWord(&packet, nBodyLen); - packBuffer(&packet, (LPBYTE)szBody, (WORD)nBodyLen); + packLEDWord(&packet, DWORD(nBodyLen + 4)); + packLEDWord(&packet, DWORD(nBodyLen)); + packBuffer(&packet, (LPBYTE)szBody, nBodyLen); // Send the monster sendServPacket(&packet); @@ -1668,7 +1660,7 @@ void CIcqProto::icq_sendReverseFailed(directconnect* dc, DWORD dwMsgID1, DWORD d int nUinLen = getUINLen(dc->dwRemoteUin); icq_packet packet; - serverPacketInit(&packet, (WORD)(nUinLen + 74)); + serverPacketInit(&packet, nUinLen + 74); packFNACHeader(&packet, ICQ_MSG_FAMILY, ICQ_MSG_RESPONSE, 0, ICQ_MSG_RESPONSE << 0x10 | (dwCookie & 0x7FFF)); packLEDWord(&packet, dwMsgID1); // Msg ID part 1 packLEDWord(&packet, dwMsgID2); // Msg ID part 2 @@ -1688,23 +1680,23 @@ void CIcqProto::icq_sendReverseFailed(directconnect* dc, DWORD dwMsgID1, DWORD d // void CIcqProto::oft_sendFileRequest(DWORD dwUin, char *szUid, oscar_filetransfer *ft, const char *pszFiles, DWORD dwLocalInternalIP) { - size_t size = strlennull(ft->szDescription) + strlennull(pszFiles) + 160; + size_t size = mir_strlen(ft->szDescription) + mir_strlen(pszFiles) + 160; char *szCoolStr = (char *)_alloca(size); mir_snprintf(szCoolStr, size, "%s%I64u1%s", pszFiles, ft->qwTotalSize, ft->szDescription); - szCoolStr = MangleXml(szCoolStr, strlennull(szCoolStr)); + szCoolStr = MangleXml(szCoolStr, mir_strlen(szCoolStr)); - WORD wDataLen = 93 + strlennull(szCoolStr) + strlennull(pszFiles); + size_t wDataLen = 93 + mir_strlen(szCoolStr) + mir_strlen(pszFiles); if (ft->bUseProxy) wDataLen += 4; icq_packet packet; - packServMsgSendHeader(&packet, ft->dwCookie, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, dwUin, szUid, 2, (WORD)(wDataLen + 0x1E)); + packServMsgSendHeader(&packet, ft->dwCookie, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, dwUin, szUid, 2, wDataLen + 0x1E); packServTLV5HeaderBasic(&packet, wDataLen, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, 0, MCAP_FILE_TRANSFER); packTLVWord(&packet, 0x0A, ++ft->wReqNum); // Request sequence packDWord(&packet, 0x000F0000); // Unknown packTLV(&packet, 0x0D, 5, (LPBYTE)"utf-8"); // Charset - packTLV(&packet, 0x0C, (WORD)strlennull(szCoolStr), (LPBYTE)szCoolStr); // User message (CoolData XML) + packTLV(&packet, 0x0C, mir_strlen(szCoolStr), (LPBYTE)szCoolStr); // User message (CoolData XML) SAFE_FREE(&szCoolStr); if (ft->bUseProxy) { packTLVDWord(&packet, 0x02, ft->dwProxyIP); // Proxy IP @@ -1717,22 +1709,22 @@ void CIcqProto::oft_sendFileRequest(DWORD dwUin, char *szUid, oscar_filetransfer packTLVDWord(&packet, 0x03, dwLocalInternalIP); // Client IP if (ft->bUseProxy) { packTLVWord(&packet, 0x05, ft->wRemotePort); - packTLVWord(&packet, 0x17, (WORD)(ft->wRemotePort ^ 0x0FFFF)); + packTLVWord(&packet, 0x17, WORD(ft->wRemotePort ^ 0x0FFFF)); packDWord(&packet, 0x00100000); // Proxy flag } else { oscar_listener *pListener = (oscar_listener*)ft->listener; packTLVWord(&packet, 0x05, pListener->wPort); - packTLVWord(&packet, 0x15, (WORD)((pListener->wPort) ^ 0x0FFFF)); + packTLVWord(&packet, 0x15, WORD((pListener->wPort) ^ 0x0FFFF)); } // TLV(0x2711) packWord(&packet, 0x2711); - packWord(&packet, (WORD)(9 + strlennull(pszFiles))); - packWord(&packet, (WORD)(ft->wFilesCount == 1 ? 1 : 2)); + packWord(&packet, WORD(9 + mir_strlen(pszFiles))); + packWord(&packet, WORD(ft->wFilesCount == 1 ? 1 : 2)); packWord(&packet, ft->wFilesCount); packDWord(&packet, (DWORD)ft->qwTotalSize); - packBuffer(&packet, (LPBYTE)pszFiles, (WORD)(strlennull(pszFiles) + 1)); + packBuffer(&packet, (LPBYTE)pszFiles, mir_strlen(pszFiles) + 1); packTLV(&packet, 0x2712, 5, (LPBYTE)"utf-8"); @@ -1784,8 +1776,8 @@ void CIcqProto::oft_sendFileCancel(DWORD dwUin, char *szUid, oscar_filetransfer void CIcqProto::oft_sendFileRedirect(DWORD dwUin, char *szUid, oscar_filetransfer *ft, DWORD dwIP, WORD wPort, int bProxy) { icq_packet packet; - packServMsgSendHeader(&packet, 0, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, dwUin, szUid, 2, (WORD)(bProxy ? 0x4a : 0x4e)); - packServTLV5HeaderBasic(&packet, (WORD)(bProxy ? 0x2C : 0x30), ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, 0, MCAP_FILE_TRANSFER); + packServMsgSendHeader(&packet, 0, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, dwUin, szUid, 2, bProxy ? 0x4a : 0x4e); + packServTLV5HeaderBasic(&packet, bProxy ? 0x2C : 0x30, ft->pMessage.dwMsgID1, ft->pMessage.dwMsgID2, 0, MCAP_FILE_TRANSFER); // Connection point data packTLVWord(&packet, 0x0A, ++ft->wReqNum); // Ack Type packTLVWord(&packet, 0x14, 0x0A); // Unknown ? @@ -1794,7 +1786,7 @@ void CIcqProto::oft_sendFileRedirect(DWORD dwUin, char *szUid, oscar_filetransfe if (!bProxy) packTLVDWord(&packet, 0x03, dwIP); packTLVWord(&packet, 0x05, wPort); // Listening Port - packTLVWord(&packet, 0x17, (WORD)(wPort ^ 0x0FFFF)); // Port Check ? + packTLVWord(&packet, 0x17, WORD(wPort ^ 0x0FFFF)); // Port Check ? if (bProxy) packDWord(&packet, 0x00100000); // Proxy Flag diff --git a/protocols/IcqOscarJ/src/tlv.cpp b/protocols/IcqOscarJ/src/tlv.cpp index ad1846e167..33fe38f7cd 100644 --- a/protocols/IcqOscarJ/src/tlv.cpp +++ b/protocols/IcqOscarJ/src/tlv.cpp @@ -30,15 +30,15 @@ #include "icqoscar.h" /* set maxTlvs<=0 to get all TLVs in length, or a positive integer to get at most the first n */ -oscar_tlv_chain* readIntoTLVChain(BYTE **buf, WORD wLen, int maxTlvs) +oscar_tlv_chain* readIntoTLVChain(BYTE **buf, size_t wLen, int maxTlvs) { oscar_tlv_chain *now, *last, *chain = NULL; WORD now_tlv_len; - int len = wLen; if (!buf || !wLen) return NULL; + intptr_t len = wLen; while (len > 0) { /* don't use unsigned variable for this check */ now = (oscar_tlv_chain *)SAFE_MALLOC(sizeof(oscar_tlv_chain)); @@ -113,7 +113,7 @@ WORD oscar_tlv_chain::getChainLength() return len; } -oscar_tlv* oscar_tlv_chain::putTLV(WORD wType, WORD wLen, BYTE *pData, BOOL bReplace) +oscar_tlv* oscar_tlv_chain::putTLV(WORD wType, size_t wLen, BYTE *pData, BOOL bReplace) { oscar_tlv *tlv = getTLV(wType, 1); @@ -132,7 +132,7 @@ oscar_tlv* oscar_tlv_chain::putTLV(WORD wType, WORD wLen, BYTE *pData, BOOL bRep } } if (tlv) { - tlv->wLen = wLen; + tlv->wLen = WORD(wLen); tlv->pData = (PBYTE)SAFE_MALLOC(wLen); memcpy(tlv->pData, pData, wLen); } @@ -278,7 +278,7 @@ void disposeChain(oscar_tlv_chain **chain) *chain = NULL; } -oscar_tlv_record_list* readIntoTLVRecordList(BYTE **buf, WORD wLen, int nCount) +oscar_tlv_record_list* readIntoTLVRecordList(BYTE **buf, size_t wLen, int nCount) { oscar_tlv_record_list *list = NULL, *last; diff --git a/protocols/IcqOscarJ/src/tlv.h b/protocols/IcqOscarJ/src/tlv.h index ea04362ea9..6e08fd0e5d 100644 --- a/protocols/IcqOscarJ/src/tlv.h +++ b/protocols/IcqOscarJ/src/tlv.h @@ -44,7 +44,7 @@ struct oscar_tlv_chain WORD getChainLength(); oscar_tlv* getTLV(WORD wType, WORD wIndex); - oscar_tlv* putTLV(WORD wType, WORD wLen, BYTE *pData, BOOL bReplace); + oscar_tlv* putTLV(WORD wType, size_t wLen, BYTE *pData, BOOL bReplace); oscar_tlv_chain* removeTLV(oscar_tlv *tlv); WORD getLength(WORD wType, WORD wIndex); @@ -67,10 +67,10 @@ struct oscar_tlv_record_list /*---------* Functions *---------------*/ -oscar_tlv_chain* readIntoTLVChain(BYTE **buf, WORD wLen, int maxTlvs); +oscar_tlv_chain* readIntoTLVChain(BYTE **buf, size_t wLen, int maxTlvs); void disposeChain(oscar_tlv_chain** chain); -oscar_tlv_record_list* readIntoTLVRecordList(BYTE **buf, WORD wLen, int nCount); +oscar_tlv_record_list* readIntoTLVRecordList(BYTE **buf, size_t wLen, int nCount); void disposeRecordList(oscar_tlv_record_list** list); diff --git a/protocols/IcqOscarJ/src/utilities.cpp b/protocols/IcqOscarJ/src/utilities.cpp index f97e185b1d..3fd17d71b7 100644 --- a/protocols/IcqOscarJ/src/utilities.cpp +++ b/protocols/IcqOscarJ/src/utilities.cpp @@ -597,26 +597,6 @@ char* strUID(DWORD dwUIN, char *pszUID) } -/* a strlen() that likes NULL */ -int __fastcall strlennull(const char *string) -{ - if (string) - return (int)strlen(string); - - return 0; -} - - -/* a wcslen() that likes NULL */ -int __fastcall strlennull(const WCHAR *string) -{ - if (string) - return (int)wcslen(string); - - return 0; -} - - /* a strcmp() that likes NULL */ int __fastcall strcmpnull(const char *str1, const char *str2) { @@ -699,10 +679,9 @@ WCHAR* __fastcall null_strcpy(WCHAR *dest, const WCHAR *src, size_t maxlen) } -int __fastcall null_strcut(char *string, int maxlen) +size_t __fastcall null_strcut(char *string, size_t maxlen) { // limit the string to max length (null & utf-8 strings ready) - int len = (int)strlennull(string); - + size_t len = mir_strlen(string); if (len < maxlen) return len; @@ -712,9 +691,9 @@ int __fastcall null_strcut(char *string, int maxlen) { // find the first byte of possible multi-byte character while ((string[len] & 0xc0) == 0x80) len--; } + // simply cut the string string[len] = '\0'; - return len; } @@ -731,12 +710,11 @@ void parseServerAddress(char* szServer, WORD* wPort) szServer[i] = '\0'; } -char* DemangleXml(const char *string, int len) +char* DemangleXml(const char *string, size_t len) { char *szWork = (char*)SAFE_MALLOC(len + 1), *szChar = szWork; - int i; - for (i = 0; i < len; i++) { + for (size_t i = 0; i < len; i++) { if (!_strnicmp(string + i, ">", 4)) { *szChar = '>'; szChar++; @@ -767,16 +745,22 @@ char* DemangleXml(const char *string, int len) return szWork; } -char* MangleXml(const char *string, int len) +char* MangleXml(const char *string, size_t len) { - int i, l = 1; + size_t l = 1; char *szWork, *szChar; - for (i = 0; i < len; i++) { - if (string[i] == '<' || string[i] == '>') l += 4; else if (string[i] == '&') l += 5; else if (string[i] == '"') l += 6; else l++; + for (size_t i = 0; i < len; i++) { + if (string[i] == '<' || string[i] == '>') + l += 4; + else if (string[i] == '&') + l += 5; + else if (string[i] == '"') + l += 6; + else l++; } szChar = szWork = (char*)SAFE_MALLOC(l + 1); - for (i = 0; i < len; i++) { + for (size_t i = 0; i < len; i++) { if (string[i] == '<') { *(DWORD*)szChar = ';tl&'; szChar += 4; @@ -807,14 +791,13 @@ char* MangleXml(const char *string, int len) return szWork; } -char* EliminateHtml(const char *string, int len) +char* EliminateHtml(const char *string, size_t len) { char *tmp = (char*)SAFE_MALLOC(len + 1); - int i, j; BOOL tag = FALSE; char *res; - for (i = 0, j = 0; i < len; i++) { + for (size_t i = 0, j = 0; i < len; i++) { if (!tag && string[i] == '<') { if ((i + 4 <= len) && (!_strnicmp(string + i, "
", 4) || !_strnicmp(string + i, "
", 5))) { // insert newline tmp[j] = '\r'; @@ -834,7 +817,7 @@ char* EliminateHtml(const char *string, int len) tmp[j] = '\0'; } SAFE_FREE((void**)&string); - res = DemangleXml(tmp, strlennull(tmp)); + res = DemangleXml(tmp, mir_strlen(tmp)); SAFE_FREE((void**)&tmp); return res; @@ -848,11 +831,11 @@ char* ApplyEncoding(const char *string, const char *pszEncoding) return null_strdup(string); if (!_strnicmp(pszEncoding, "unicode-2-0", 11)) { // it is UCS-2 encoded - int wLen = strlennull((WCHAR*)string) + 1; - WCHAR *szStr = (WCHAR*)_alloca(wLen * 2); + size_t wLen = mir_wstrlen((WCHAR*)string) + 1; + WCHAR *szStr = (WCHAR*)_alloca(wLen*2); BYTE *tmp = (BYTE*)string; - unpackWideString(&tmp, szStr, (WORD)(wLen * 2)); + unpackWideString(&tmp, szStr, wLen*2); return make_utf8_string(szStr); } @@ -947,10 +930,10 @@ int RandRange(int nLow, int nHigh) bool IsStringUIN(const char *pszString) { - int nLen = strlennull(pszString); + size_t nLen = mir_strlen(pszString); if (nLen > 0 && pszString[0] != '0') { - for (int i = 0; i < nLen; i++) + for (size_t i = 0; i < nLen; i++) if ((pszString[i] < '0') || (pszString[i] > '9')) return FALSE; @@ -1075,9 +1058,9 @@ void __cdecl CIcqProto::SetStatusNoteThread(void *pDelay) m_ratesMutex->Leave(); BYTE *pBuffer = NULL; - int cbBuffer = 0; + size_t cbBuffer = 0; - ppackTLV(&pBuffer, &cbBuffer, 0x226, strlennull(setStatusNoteText), (BYTE*)setStatusNoteText); + ppackTLV(&pBuffer, &cbBuffer, 0x226, mir_strlen(setStatusNoteText), (BYTE*)setStatusNoteText); icq_changeUserDirectoryInfoServ(pBuffer, cbBuffer, DIRECTORYREQUEST_UPDATENOTE); SAFE_FREE((void**)&pBuffer); @@ -1123,27 +1106,27 @@ void __cdecl CIcqProto::SetStatusNoteThread(void *pDelay) if (m_bMoodsEnabled) setString(DBSETTING_STATUS_MOOD, setStatusMoodData); - WORD wStatusNoteLen = strlennull(setStatusNoteText); - WORD wStatusMoodLen = m_bMoodsEnabled ? strlennull(setStatusMoodData) : 0; - icq_packet packet; - WORD wDataLen = (wStatusNoteLen ? wStatusNoteLen + 4 : 0) + 4 + wStatusMoodLen + 4; + size_t wStatusNoteLen = mir_strlen(setStatusNoteText); + size_t wStatusMoodLen = m_bMoodsEnabled ? mir_strlen(setStatusMoodData) : 0; + size_t wDataLen = (wStatusNoteLen ? wStatusNoteLen + 4 : 0) + 4 + wStatusMoodLen + 4; + icq_packet packet; serverPacketInit(&packet, wDataLen + 14); packFNACHeader(&packet, ICQ_SERVICE_FAMILY, ICQ_CLIENT_SET_STATUS); // Change only session data packWord(&packet, 0x1D); // TLV 1D - packWord(&packet, wDataLen); // TLV length + packWord(&packet, WORD(wDataLen)); // TLV length packWord(&packet, 0x02); // Item Type if (wStatusNoteLen) { - packWord(&packet, 0x400 | (WORD)(wStatusNoteLen + 4)); // Flags + Item Length - packWord(&packet, wStatusNoteLen); // Text Length + packWord(&packet, 0x400 | WORD(wStatusNoteLen + 4)); // Flags + Item Length + packWord(&packet, WORD(wStatusNoteLen)); // Text Length packBuffer(&packet, (LPBYTE)setStatusNoteText, wStatusNoteLen); packWord(&packet, 0); // Encoding not specified (utf-8 is default) } - else - packWord(&packet, 0); // Flags + Item Length + else packWord(&packet, 0); // Flags + Item Length + packWord(&packet, 0x0E); // Item Type - packWord(&packet, wStatusMoodLen); // Flags + Item Length + packWord(&packet, WORD(wStatusMoodLen)); // Flags + Item Length if (wStatusMoodLen) packBuffer(&packet, (LPBYTE)setStatusMoodData, wStatusMoodLen); // Mood @@ -1317,112 +1300,6 @@ void CIcqProto::writeDbInfoSettingTLVBlob(MCONTACT hContact, const char *szSetti delSetting(hContact, szSetting); } - -BOOL CIcqProto::writeDbInfoSettingString(MCONTACT hContact, const char* szSetting, char** buf, WORD* pwLength) -{ - if (*pwLength < 2) - return FALSE; - - WORD wLen; - unpackLEWord((LPBYTE*)buf, &wLen); - *pwLength -= 2; - - if (*pwLength < wLen) - return FALSE; - - if ((wLen > 0) && (**buf) && ((*buf)[wLen - 1] == 0)) { // Make sure we have a proper string - WORD wCp = getWord(hContact, "InfoCodePage", getWord(hContact, "InfoCP", CP_ACP)); - if (wCp != CP_ACP) { - char *szUtf = ansi_to_utf8_codepage(*buf, wCp); - - if (szUtf) { - db_set_utf(hContact, m_szModuleName, szSetting, szUtf); - SAFE_FREE((void**)&szUtf); - } - else setString(hContact, szSetting, *buf); - } - else setString(hContact, szSetting, *buf); - } - else delSetting(hContact, szSetting); - - *buf += wLen; - *pwLength -= wLen; - - return TRUE; -} - -BOOL CIcqProto::writeDbInfoSettingWord(MCONTACT hContact, const char *szSetting, char **buf, WORD* pwLength) -{ - if (*pwLength < 2) - return FALSE; - - WORD wVal; - unpackLEWord((LPBYTE*)buf, &wVal); - *pwLength -= 2; - - if (wVal != 0) - setWord(hContact, szSetting, wVal); - else - delSetting(hContact, szSetting); - - return TRUE; -} - -BOOL CIcqProto::writeDbInfoSettingWordWithTable(MCONTACT hContact, const char *szSetting, const FieldNamesItem *table, char **buf, WORD* pwLength) -{ - if (*pwLength < 2) - return FALSE; - - WORD wVal; - unpackLEWord((LPBYTE*)buf, &wVal); - *pwLength -= 2; - - char sbuf[MAX_PATH]; - char *text = LookupFieldNameUtf(table, wVal, sbuf, MAX_PATH); - if (text) - db_set_utf(hContact, m_szModuleName, szSetting, text); - else - delSetting(hContact, szSetting); - - return TRUE; -} - -BOOL CIcqProto::writeDbInfoSettingByte(MCONTACT hContact, const char *pszSetting, char **buf, WORD* pwLength) -{ - if (*pwLength < 1) - return FALSE; - - BYTE byVal; - unpackByte((LPBYTE*)buf, &byVal); - *pwLength -= 1; - - if (byVal != 0) - setByte(hContact, pszSetting, byVal); - else - delSetting(hContact, pszSetting); - - return TRUE; -} - -BOOL CIcqProto::writeDbInfoSettingByteWithTable(MCONTACT hContact, const char *szSetting, const FieldNamesItem *table, char **buf, WORD* pwLength) -{ - if (*pwLength < 1) - return FALSE; - - BYTE byVal; - unpackByte((LPBYTE*)buf, &byVal); - *pwLength -= 1; - - char sbuf[MAX_PATH]; - char *text = LookupFieldNameUtf(table, byVal, sbuf, MAX_PATH); - if (text) - db_set_utf(hContact, m_szModuleName, szSetting, text); - else - delSetting(hContact, szSetting); - - return TRUE; -} - char* time2text(time_t time) { tm *local = localtime(&time); @@ -1623,7 +1500,7 @@ char* __fastcall ICQTranslateUtf(const char *src) { // this takes UTF-8 strings only!!! char *szRes = NULL; - if (!strlennull(src)) { // for the case of empty strings + if (!mir_strlen(src)) { // for the case of empty strings return null_strdup(src); } @@ -1639,7 +1516,7 @@ char* __fastcall ICQTranslateUtf(const char *src) char* __fastcall ICQTranslateUtfStatic(const char *src, char *buf, size_t bufsize) { // this takes UTF-8 strings only!!! - if (strlennull(src)) { // we can use unicode translate (0.5+) + if (mir_strlen(src)) { // we can use unicode translate (0.5+) WCHAR *usrc = make_unicode_string(src); make_utf8_string_static(TranslateW(usrc), buf, bufsize); @@ -1655,7 +1532,7 @@ char* __fastcall ICQTranslateUtfStatic(const char *src, char *buf, size_t bufsiz char* CIcqProto::GetUserStoredPassword(char *szBuffer, int cbSize) { if (!getSettingStringStatic(NULL, "Password", szBuffer, cbSize)) - if (strlennull(szBuffer)) + if (mir_strlen(szBuffer)) return szBuffer; return NULL; @@ -1741,7 +1618,7 @@ char* FileNameToUtf(const TCHAR *filename) int FileAccessUtf(const char *path, int mode) { - int size = strlennull(path) + 2; + size_t size = mir_strlen(path) + 2; TCHAR *szPath = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(path, szPath, size)) @@ -1753,7 +1630,7 @@ int FileAccessUtf(const char *path, int mode) int FileStatUtf(const char *path, struct _stati64 *buffer) { - int size = strlennull(path) + 2; + size_t size = mir_strlen(path) + 2; TCHAR *szPath = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(path, szPath, size)) @@ -1766,7 +1643,7 @@ int FileStatUtf(const char *path, struct _stati64 *buffer) int MakeDirUtf(const char *dir) { int wRes = -1; - int size = strlennull(dir) + 2; + size_t size = mir_strlen(dir) + 2; TCHAR *szDir = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(dir, szDir, size)) { // _tmkdir can created only one dir at once @@ -1795,7 +1672,7 @@ int MakeDirUtf(const char *dir) int OpenFileUtf(const char *filename, int oflag, int pmode) { - int size = strlennull(filename) + 2; + size_t size = mir_strlen(filename) + 2; TCHAR *szFile = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(filename, szFile, size)) @@ -1839,7 +1716,7 @@ char* GetDlgItemTextUtf(HWND hwndDlg, int iItem) void SetWindowTextUtf(HWND hWnd, const char *szText) { - int size = strlennull(szText) + 2; + size_t size = mir_strlen(szText) + 2; TCHAR *tszText = (TCHAR*)_alloca(size * sizeof(TCHAR)); if (utf8_to_tchar_static(szText, tszText, size)) diff --git a/protocols/IcqOscarJ/src/utilities.h b/protocols/IcqOscarJ/src/utilities.h index b2016f4802..ce1763039c 100644 --- a/protocols/IcqOscarJ/src/utilities.h +++ b/protocols/IcqOscarJ/src/utilities.h @@ -65,23 +65,21 @@ char *NickFromHandle(MCONTACT hContact); char *NickFromHandleUtf(MCONTACT hContact); char *strUID(DWORD dwUIN, char *pszUID); -int __fastcall strlennull(const char *string); int __fastcall strcmpnull(const char *str1, const char *str2); int __fastcall stricmpnull(const char *str1, const char *str2); char* __fastcall strstrnull(const char *str, const char *substr); char* __fastcall null_strdup(const char *string); char* __fastcall null_strcpy(char *dest, const char *src, size_t maxlen); -int __fastcall null_strcut(char *string, int maxlen); +size_t __fastcall null_strcut(char *string, size_t maxlen); -int __fastcall strlennull(const WCHAR *string); WCHAR* __fastcall null_strdup(const WCHAR *string); WCHAR* __fastcall null_strcpy(WCHAR *dest, const WCHAR *src, size_t maxlen); void parseServerAddress(char *szServer, WORD* wPort); -char *DemangleXml(const char *string, int len); -char *MangleXml(const char *string, int len); -char *EliminateHtml(const char *string, int len); +char *DemangleXml(const char *string, size_t len); +char *MangleXml(const char *string, size_t len); +char *EliminateHtml(const char *string, size_t len); char *ApplyEncoding(const char *string, const char *pszEncoding); int RandRange(int nLow, int nHigh); diff --git a/protocols/IcqOscarJ/src/version.h b/protocols/IcqOscarJ/src/version.h index 5f7bdf2dec..c3cf0026fb 100644 --- a/protocols/IcqOscarJ/src/version.h +++ b/protocols/IcqOscarJ/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 11 #define __RELEASE_NUM 2 -#define __BUILD_NUM 5 +#define __BUILD_NUM 6 #include -- cgit v1.2.3