Third patch. -- Tim van Erven <[EMAIL PROTECTED]> OpenPGP Key ID: 712CB811 Fingerprint: F6C9 61EE 242C C012 36D5 BBF8 6310 D557 712C B811
diff -u -ru -X dontdiff licq-p1/include/licq_buffer.h licq/include/licq_buffer.h --- licq-p1/include/licq_buffer.h Wed Jun 12 16:09:31 2002 +++ licq/include/licq_buffer.h Thu Jun 13 01:09:50 2002 @@ -84,10 +84,10 @@ CBuffer& operator >> (unsigned char &in); CBuffer& operator >> (unsigned short &in); CBuffer& operator >> (unsigned long &in); - char *UnpackString(char *); - char *UnpackString(); - char *UnpackStringBE(char *); - char *UnpackStringBE(); + char *UnpackString(char *, unsigned short); + char *UnpackString(); // Need to delete[] returned string + char *UnpackStringBE(char *, unsigned short); + char *UnpackStringBE(); // Need to delete[] returned string unsigned long UnpackUnsignedLong(); unsigned long UnpackUinString(); unsigned short UnpackUnsignedShort(); @@ -118,7 +118,7 @@ unsigned long UnpackUnsignedLongTLV(unsigned short); unsigned short UnpackUnsignedShortTLV(unsigned short); unsigned char UnpackCharTLV(unsigned short); - char *UnpackStringTLV(unsigned short); + char *UnpackStringTLV(unsigned short); // Need to delete[] returned string CBuffer UnpackTLV(unsigned short); private: diff -u -ru -X dontdiff licq-p1/include/licq_chat.h licq/include/licq_chat.h --- licq-p1/include/licq_chat.h Wed Jun 12 16:09:31 2002 +++ licq/include/licq_chat.h Thu Jun 13 00:06:26 2002 @@ -182,7 +182,7 @@ CChatClient(ICQUser *); // Initialize from the handshake buffer (does not set the session - // or port fields however + // or port fields however) bool LoadFromHandshake_v2(CBuffer &); bool LoadFromHandshake_v4(CBuffer &); bool LoadFromHandshake_v6(CBuffer &); diff -u -ru -X dontdiff licq-p1/src/buffer.cpp licq/src/buffer.cpp --- licq-p1/src/buffer.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/buffer.cpp Thu Jun 13 01:16:03 2002 @@ -299,17 +299,19 @@ return(*this); } -char *CBuffer::UnpackStringBE(char* sz) +char *CBuffer::UnpackStringBE(char* sz, unsigned short _usiSize) { unsigned short nLen; sz[0] = '\0'; *this >> nLen; rev_e_short(nLen); + nLen = nLen < _usiSize ? nLen : _usiSize - 1; for (unsigned short i = 0; i < nLen; i++) *this >> sz[i]; sz[nLen] = '\0'; return sz; } +// Need to delete[] returned string char *CBuffer::UnpackStringBE() { unsigned short nLen; @@ -322,16 +324,18 @@ return sz; } -char *CBuffer::UnpackString(char *sz) +char *CBuffer::UnpackString(char *sz, unsigned short _usiSize) { unsigned short nLen; sz[0] = '\0'; *this >> nLen; + nLen = nLen < _usiSize ? nLen : _usiSize - 1; for (unsigned short i = 0; i < nLen; i++) *this >> sz[i]; sz[nLen] = '\0'; return sz; } +// Need to delete[] returned string char *CBuffer::UnpackString() { unsigned short nLen; @@ -687,6 +691,7 @@ return nRet; } +// Need to delete[] returned string char *CBuffer::UnpackStringTLV(unsigned short nType) { char *str = 0; diff -u -ru -X dontdiff licq-p1/src/icqd-chat.cpp licq/src/icqd-chat.cpp --- licq-p1/src/icqd-chat.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/icqd-chat.cpp Thu Jun 13 01:13:13 2002 @@ -71,7 +71,7 @@ b.UnpackUnsignedLong(); b.UnpackUnsignedLong(); m_nUin = b.UnpackUnsignedLong(); - m_szName = strdup(b.UnpackString(buf)); + m_szName = strdup(b.UnpackString(buf, sizeof(buf))); m_nPort = b.UnpackUnsignedShort(); m_nPort = (m_nPort >> 8) + (m_nPort << 8); m_nColorForeRed = (unsigned char)b.UnpackChar(); @@ -270,7 +270,7 @@ b.UnpackUnsignedLong(); m_nUin = b.UnpackUnsignedLong(); - m_szName = strdup(b.UnpackString(buf)); + m_szName = strdup(b.UnpackString(buf, sizeof(buf))); m_nColorForeRed = (unsigned char)b.UnpackChar(); m_nColorForeGreen = (unsigned char)b.UnpackChar(); m_nColorForeBlue = (unsigned char)b.UnpackChar(); @@ -288,7 +288,7 @@ m_nSession = b.UnpackUnsignedShort(); m_nFontSize = b.UnpackUnsignedLong(); m_nFontFace = b.UnpackUnsignedLong(); - m_szFontFamily = strdup(b.UnpackString(buf)); + m_szFontFamily = strdup(b.UnpackString(buf, sizeof(buf))); b.UnpackUnsignedShort(); // Read out client packets @@ -345,7 +345,7 @@ m_nSession = b.UnpackUnsignedShort(); m_nFontSize = b.UnpackUnsignedLong(); m_nFontFace = b.UnpackUnsignedLong(); - m_szFontFamily = strdup(b.UnpackString(buf)); + m_szFontFamily = strdup(b.UnpackString(buf, sizeof(buf))); } /* @@ -373,7 +373,7 @@ char buf[128]; //b.UnpackChar(); // CHAT_CHANGExFONT - b.UnpackString(buf); + b.UnpackString(buf, sizeof(buf)); b.UnpackUnsignedShort(); // Charset? m_szFontFamily = strdup(buf); diff -u -ru -X dontdiff licq-p1/src/icqd-filetransfer.cpp licq/src/icqd-filetransfer.cpp --- licq-p1/src/icqd-filetransfer.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/icqd-filetransfer.cpp Thu Jun 13 01:16:09 2002 @@ -375,7 +375,7 @@ m_nBatchFiles = b.UnpackUnsignedLong(); m_nBatchSize = b.UnpackUnsignedLong(); m_nSpeed = b.UnpackUnsignedLong(); - b.UnpackString(m_szRemoteName); + b.UnpackString(m_szRemoteName, sizeof(m_szRemoteName)); m_nBatchStartTime = time(TIME_NOW); m_nBatchBytesTransfered = m_nBatchPos = 0; @@ -422,7 +422,7 @@ return false; } b.UnpackChar(); - b.UnpackString(m_szFileName); + b.UnpackString(m_szFileName, sizeof(m_szFileName)); b.UnpackUnsignedShort(); // 0 length string...? b.UnpackChar(); m_nFileSize = b.UnpackUnsignedLong(); @@ -549,7 +549,7 @@ return false; } m_nSpeed = b.UnpackUnsignedLong(); - b.UnpackString(m_szRemoteName); + b.UnpackString(m_szRemoteName, sizeof(m_szRemoteName)); // Send file info packet CPFile_Info p(*m_iPathName); diff -u -ru -X dontdiff licq-p1/src/icqd-srv.cpp licq/src/icqd-srv.cpp --- licq-p1/src/icqd-srv.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/icqd-srv.cpp Thu Jun 13 01:49:38 2002 @@ -1904,6 +1904,7 @@ if (!packet.readTLV(-1, nByteLen)) { gLog.Error("%sUnable to parse contact list TLV, aborting!\n", L_ERRORxSTR); + delete[] szName; return; } } @@ -1953,6 +1954,7 @@ } // switch (nType) packet.cleanupTLV(); + delete[] szName; } // for count // Update local info about contact list @@ -2009,6 +2011,7 @@ { /*unsigned long Flags =*/ packet.UnpackUnsignedLongBE(); unsigned short nSubSequence = packet.UnpackUnsignedShortBE(); + char *tmp; switch (nSubtype) { @@ -2063,8 +2066,8 @@ nTypeMsg &= ~ICQ_CMDxSUB_FxMULTIREC; char* szMessage = new char[msg.getDataMaxSize()]; - msg.UnpackString(szMessage); // 2 byte length little endian + string - + // 2 byte length little endian + string + msg.UnpackString(szMessage, msg.getDataMaxSize()); char *szType = NULL; unsigned short nTypeEvent = 0; CUserEvent *eEvent = NULL; @@ -2620,10 +2623,10 @@ nFoundUin = msg.UnpackUnsignedLong(); CSearchAck *s = new CSearchAck(nFoundUin);; - s->m_szAlias = strdup(msg.UnpackString(szTemp)); - s->m_szFirstName = strdup(msg.UnpackString(szTemp)); - s->m_szLastName = strdup(msg.UnpackString(szTemp)); - s->m_szEmail = strdup(msg.UnpackString(szTemp)); + s->m_szAlias = strdup(msg.UnpackString(szTemp, sizeof(szTemp))); + s->m_szFirstName = strdup(msg.UnpackString(szTemp, sizeof(szTemp))); + s->m_szLastName = strdup(msg.UnpackString(szTemp, sizeof(szTemp))); + s->m_szEmail = strdup(msg.UnpackString(szTemp, sizeof(szTemp))); msg.UnpackChar(); // authorization required s->m_nStatus = msg.UnpackChar(); msg.UnpackChar(); // unknown @@ -2703,17 +2706,28 @@ // main home info u->SetEnableSave(false); - u->SetAlias( msg.UnpackString() ); - u->SetFirstName( msg.UnpackString() ); - u->SetLastName( msg.UnpackString() ); - u->SetEmailPrimary( msg.UnpackString() ); - u->SetCity( msg.UnpackString() ); - u->SetState( msg.UnpackString() ); - u->SetPhoneNumber( msg.UnpackString() ); - u->SetFaxNumber( msg.UnpackString() ); - u->SetAddress( msg.UnpackString() ); - u->SetCellularNumber( msg.UnpackString() ); - u->SetZipCode( msg.UnpackString() ); + u->SetAlias( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetFirstName( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetLastName( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetEmailPrimary( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCity( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetState( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetPhoneNumber( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetFaxNumber( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetAddress( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCellularNumber( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetZipCode( tmp = msg.UnpackString() ); + delete[] tmp; u->SetCountryCode( msg.UnpackUnsignedShort() ); u->SetTimezone( msg.UnpackChar() ); u->SetHideEmail( msg.UnpackChar() ); // 0 = no, 1 = yes @@ -2749,7 +2763,8 @@ u->SetEnableSave(false); u->SetAge( msg.UnpackUnsignedShort() ); u->SetGender( msg.UnpackChar() ); - u->SetHomepage( msg.UnpackString() ); + u->SetHomepage( tmp = msg.UnpackString() ); + delete[] tmp; u->SetBirthYear( msg.UnpackUnsignedShort() ); u->SetBirthMonth( msg.UnpackChar() ); u->SetBirthDay (msg.UnpackChar() ); @@ -2782,11 +2797,13 @@ for(int i = 0; i < nEmail; i++) { msg.UnpackChar(); // publish email, not yet implemented if(i == 0) { - u->SetEmailSecondary( msg.UnpackString() ); + u->SetEmailSecondary( tmp = msg.UnpackString() ); + delete[] tmp; gTranslator.ServerToClient(u->GetEmailSecondary()); } if(i == 1) { - u->SetEmailOld( msg.UnpackString() ); + u->SetEmailOld( tmp = msg.UnpackString() ); + delete[] tmp; gTranslator.ServerToClient(u->GetEmailOld()); } } @@ -2826,18 +2843,28 @@ gLog.Info("%sWork info on %s (%ld).\n", L_SRVxSTR, u->GetAlias(), u->Uin()); u->SetEnableSave(false); - u->SetCompanyCity( msg.UnpackString() ); - u->SetCompanyState( msg.UnpackString() ); - u->SetCompanyPhoneNumber( msg.UnpackString() ); - u->SetCompanyFaxNumber( msg.UnpackString() ); - u->SetCompanyAddress( msg.UnpackString() ); - u->SetCompanyZip( msg.UnpackString() ); + u->SetCompanyCity( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyState( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyPhoneNumber( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyFaxNumber( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyAddress( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyZip( tmp = msg.UnpackString() ); + delete[] tmp; u->SetCompanyCountry( msg.UnpackUnsignedShort() ); - u->SetCompanyName( msg.UnpackString() ); - u->SetCompanyDepartment( msg.UnpackString() ); - u->SetCompanyPosition( msg.UnpackString() ); + u->SetCompanyName( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyDepartment( tmp = msg.UnpackString() ); + delete[] tmp; + u->SetCompanyPosition( tmp = msg.UnpackString() ); + delete[] tmp; msg.UnpackUnsignedShort(); // unknown - u->SetCompanyHomepage( msg.UnpackString() ); + u->SetCompanyHomepage( tmp = msg.UnpackString() ); + delete[] tmp; // translating string with Translation Table gTranslator.ServerToClient(u->GetCompanyCity()); diff -u -ru -X dontdiff licq-p1/src/icqd-tcp.cpp licq/src/icqd-tcp.cpp --- licq-p1/src/icqd-tcp.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/icqd-tcp.cpp Thu Jun 13 01:41:40 2002 @@ -1311,7 +1311,7 @@ case ICQ_CMDxSUB_CHAT: { char szChatClients[1024]; - packet.UnpackString(szChatClients); + packet.UnpackString(szChatClients, sizeof(szChatClients)); packet.UnpackUnsignedLong(); // reversed port unsigned short nPort = packet.UnpackUnsignedLong(); if (nInVersion <= 4) packet >> theSequence; @@ -1526,7 +1526,7 @@ case ICQ_CMDxSUB_CHAT: { char ul[1024]; - packet.UnpackString(ul); + packet.UnpackString(ul, sizeof(ul)); packet >> nPortReversed // port backwards >> nPort; // port to connect to for chat if (nInVersion <= 4) packet >> theSequence; diff -u -ru -X dontdiff licq-p1/src/icqd-udp.cpp licq/src/icqd-udp.cpp --- licq-p1/src/icqd-udp.cpp Wed Jun 12 16:09:32 2002 +++ licq/src/icqd-udp.cpp Thu Jun 13 01:46:48 2002 @@ -958,10 +958,10 @@ // read in the four data fields; alias, first name, last name, and email address u->SetEnableSave(false); char temp[MAX_DATA_LEN], cAuthorization; - u->SetAlias(packet.UnpackString(temp)); - u->SetFirstName(packet.UnpackString(temp)); - u->SetLastName(packet.UnpackString(temp)); - u->SetEmailPrimary(packet.UnpackString(temp)); + u->SetAlias(packet.UnpackString(temp, sizeof(temp))); + u->SetFirstName(packet.UnpackString(temp, sizeof(temp))); + u->SetLastName(packet.UnpackString(temp, sizeof(temp))); + u->SetEmailPrimary(packet.UnpackString(temp, sizeof(temp))); packet >> cAuthorization; u->SetAuthorization(cAuthorization == 0 ? true : false); @@ -1020,15 +1020,15 @@ u->SetEnableSave(false); char sTemp[MAX_MESSAGE_SIZE]; - u->SetCity(packet.UnpackString(sTemp)); + u->SetCity(packet.UnpackString(sTemp, sizeof(sTemp))); u->SetCountryCode(packet.UnpackUnsignedShort()); u->SetTimezone(packet.UnpackChar()); - u->SetState(packet.UnpackString(sTemp)); + u->SetState(packet.UnpackString(sTemp, sizeof(sTemp))); u->SetAge(packet.UnpackUnsignedShort()); u->SetGender(packet.UnpackChar()); - u->SetPhoneNumber(packet.UnpackString(sTemp)); - u->SetHomepage(packet.UnpackString(sTemp)); - u->SetAbout(packet.UnpackString(sTemp)); + u->SetPhoneNumber(packet.UnpackString(sTemp, sizeof(sTemp))); + u->SetHomepage(packet.UnpackString(sTemp, sizeof(sTemp))); + u->SetAbout(packet.UnpackString(sTemp, sizeof(sTemp))); sprintf(sTemp, "%ld", packet.UnpackUnsignedLong()); u->SetZipCode(sTemp); @@ -1195,10 +1195,10 @@ packet >> nUin; CSearchAck *s = new CSearchAck(nUin); - s->m_szAlias = strdup(packet.UnpackString(szTemp)); - s->m_szFirstName = strdup(packet.UnpackString(szTemp)); - s->m_szLastName = strdup(packet.UnpackString(szTemp)); - s->m_szEmail = strdup(packet.UnpackString(szTemp)); + s->m_szAlias = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szFirstName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szLastName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szEmail = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); // translating string with Translation Table gTranslator.ServerToClient(s->m_szAlias); @@ -1987,10 +1987,10 @@ { gLog.Info("%sBasic info on %s (%ld).\n", L_SBLANKxSTR, u->GetAlias(), u->Uin()); u->SetEnableSave(false); - u->SetAlias(packet.UnpackString(szTemp)); - u->SetFirstName(packet.UnpackString(szTemp)); - u->SetLastName(packet.UnpackString(szTemp)); - u->SetEmailPrimary(packet.UnpackString(szTemp)); + u->SetAlias(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetFirstName(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetLastName(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetEmailPrimary(packet.UnpackString(szTemp, sizeof(szTemp))); // FIXME how does this packet end? //u->SetAuthorization(!packet.UnpackChar()); //packet.UnpackChar(); // 02, what the? @@ -2013,19 +2013,19 @@ { gLog.Info("%sGeneral info on %s (%ld).\n", L_SBLANKxSTR, u->GetAlias(), u->Uin()); u->SetEnableSave(false); - u->SetAlias(packet.UnpackString(szTemp)); - u->SetFirstName(packet.UnpackString(szTemp)); - u->SetLastName(packet.UnpackString(szTemp)); - u->SetEmailPrimary(packet.UnpackString(szTemp)); - u->SetEmailSecondary(packet.UnpackString(szTemp)); - u->SetEmailOld(packet.UnpackString(szTemp)); - u->SetCity(packet.UnpackString(szTemp)); - u->SetState(packet.UnpackString(szTemp)); - u->SetPhoneNumber(packet.UnpackString(szTemp)); - u->SetFaxNumber(packet.UnpackString(szTemp)); - u->SetAddress(packet.UnpackString(szTemp)); - u->SetCellularNumber(packet.UnpackString(szTemp)); - u->SetZipCode(packet.UnpackString(szTemp)); + u->SetAlias(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetFirstName(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetLastName(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetEmailPrimary(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetEmailSecondary(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetEmailOld(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCity(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetState(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetPhoneNumber(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetFaxNumber(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetAddress(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCellularNumber(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetZipCode(packet.UnpackString(szTemp, sizeof(szTemp))); u->SetCountryCode(packet.UnpackUnsignedShort()); u->SetTimezone(packet.UnpackChar()); // FIXME how does this packet end? @@ -2058,18 +2058,19 @@ { gLog.Info("%sWork info on %s (%ld).\n", L_SBLANKxSTR, u->GetAlias(), u->Uin()); u->SetEnableSave(false); - u->SetCompanyCity(packet.UnpackString(szTemp)); - u->SetCompanyState(packet.UnpackString(szTemp)); - u->SetCompanyPhoneNumber(packet.UnpackString(szTemp)); - u->SetCompanyFaxNumber(packet.UnpackString(szTemp)); - u->SetCompanyAddress(packet.UnpackString(szTemp)); - packet.UnpackString(szTemp); // who knows..."256" typically + u->SetCompanyCity(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyState(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyPhoneNumber(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyFaxNumber(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyAddress(packet.UnpackString(szTemp, sizeof(szTemp))); + // who knows..."256" typically + packet.UnpackString(szTemp, sizeof(szTemp)); packet.UnpackUnsignedShort(); // ??? 0x0000 - u->SetCompanyName(packet.UnpackString(szTemp)); - u->SetCompanyDepartment(packet.UnpackString(szTemp)); - u->SetCompanyPosition(packet.UnpackString(szTemp)); + u->SetCompanyName(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyDepartment(packet.UnpackString(szTemp, sizeof(szTemp))); + u->SetCompanyPosition(packet.UnpackString(szTemp, sizeof(szTemp))); packet.UnpackUnsignedShort(); // ?? 0x0004 - u->SetCompanyHomepage(packet.UnpackString(szTemp)); + u->SetCompanyHomepage(packet.UnpackString(szTemp, sizeof(szTemp))); // translating string with Translation Table gTranslator.ServerToClient(u->GetCompanyCity()); @@ -2094,7 +2095,7 @@ u->SetEnableSave(false); u->SetAge(packet.UnpackUnsignedShort()); u->SetGender(packet.UnpackChar()); - u->SetHomepage(packet.UnpackString(szTemp)); + u->SetHomepage(packet.UnpackString(szTemp, sizeof(szTemp))); u->SetBirthYear(packet.UnpackUnsignedShort()); u->SetBirthMonth(packet.UnpackChar()); u->SetBirthDay(packet.UnpackChar()); @@ -2114,7 +2115,7 @@ case ICQ_CMDxMETA_ABOUT: { gLog.Info("%sAbout info on %s (%ld).\n", L_SBLANKxSTR, u->GetAlias(), u->Uin()); - u->SetAbout(packet.UnpackString(szTemp)); + u->SetAbout(packet.UnpackString(szTemp, sizeof(szTemp))); gTranslator.ServerToClient(u->GetAbout()); PushPluginSignal(new CICQSignal(SIGNAL_UPDATExUSER, USER_ABOUT, nUin)); @@ -2285,10 +2286,10 @@ CSearchAck *s = new CSearchAck(nUin); // Get the data out of the packet - s->m_szAlias = strdup(packet.UnpackString(szTemp)); - s->m_szFirstName = strdup(packet.UnpackString(szTemp)); - s->m_szLastName = strdup(packet.UnpackString(szTemp)); - s->m_szEmail = strdup(packet.UnpackString(szTemp)); + s->m_szAlias = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szFirstName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szLastName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szEmail = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); // Translating string with Translation Table gTranslator.ServerToClient(s->m_szAlias); @@ -2355,10 +2356,10 @@ CSearchAck *s = new CSearchAck(nUin); // Get the data out of the packet - s->m_szAlias = strdup(packet.UnpackString(szTemp)); - s->m_szFirstName = strdup(packet.UnpackString(szTemp)); - s->m_szLastName = strdup(packet.UnpackString(szTemp)); - s->m_szEmail = strdup(packet.UnpackString(szTemp)); + s->m_szAlias = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szFirstName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szLastName = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); + s->m_szEmail = strdup(packet.UnpackString(szTemp, sizeof(szTemp))); // Translating string with Translation Table gTranslator.ServerToClient(s->m_szAlias);