--- BaseClient.cpp 2004-03-23 12:15:32.000000000 -0500 +++ /home/madcat/BaseClient.cpp 2004-03-27 19:02:18.000000000 -0500 @@ -861,5 +861,5 @@ // lemonfan - I count 9 tags... // Kry - Yes, my fault - data->Write((uint32)9); /* 7 -> 8 */ + data->Write((uint32)8); /* 7 -> 8 */ CTag tag1(ET_COMPRESSION,1); @@ -889,8 +889,10 @@ tag8.WriteTagToFile(data); +/* // Support for tag ET_MOD_VERSION CTag tag9(ET_MOD_VERSION, MOD_VERSION); tag9.WriteTagToFile(data); // Maella end +*/ Packet* packet = new Packet(data,OP_EMULEPROT); @@ -908,5 +910,7 @@ void CUpDownClient::ProcessMuleInfoPacket(char* pachPacket, uint32 nSize) { + try { + //DumpMem(pachPacket,nSize); CSafeMemFile data((BYTE*)pachPacket,nSize); m_byCompatibleClient = 0; @@ -944,4 +948,5 @@ return; } + m_bEmuleProtocol = true; @@ -992,7 +997,34 @@ m_bySupportSecIdent = temptag.tag.intvalue & 3; m_bSupportsPreview = (temptag.tag.intvalue & 128) > 0; + break;/* + case ET_MOD_VERSION: + if (temptag.tag.type == 2) + m_strModVersion = temptag.tag.stringvalue; + else if (temptag.tag.type == 3) + m_strModVersion.Format(_T("ModID=%u"), temptag.tag.intvalue); + else + m_strModVersion = _T("ModID="); + break;*/ + default: + //printf("Mule Unk Tag 0x%02x=%x\n", temptag.tag.specialtag, (UINT)temptag.tag.intvalue); break; } } + } + catch ( CStrangePacket ) + { + printf("Wrong Tags on hello packet!!\n"); + printf("Sent by %s on ip %s using client 5i version %i\n",GetUserName(),GetFullIP(),GetClientSoft(),GetMuleVersion()); + printf("Packet Dump:\n"); + DumpMem(pachPacket,nSize); + } + catch ( CInvalidPacket ) + { + printf("Wrong Tags on hello packet!!!\n\n"); + printf("Sent by %s on ip %s using client 5i version %i\n",GetUserName(),GetFullIP(),GetClientSoft(),GetMuleVersion()); + printf("Packet Dump:\n"); + DumpMem(pachPacket,nSize); + } + if( m_byDataCompVer == 0 ){ m_bySourceExchangeVer = 0; --- filemem.cpp 2004-03-23 12:25:53.000000000 -0500 +++ /home/madcat/filemem.cpp 2004-03-27 18:43:24.000000000 -0500 @@ -132,4 +132,5 @@ return 0; // dont' read over buffer end + //printf("fPos %i, fFSize %i\n",fPosition,fFileSize); if (fPosition>fFileSize) { throw CInvalidPacket("short packet on read (corrupted tag?)"); @@ -137,6 +138,9 @@ } unsigned int readlen=length; - if(length+fPosition>fFileSize) + if(length+fPosition>fFileSize) { + printf("Read After End Of File!!!!\n"); + throw CInvalidPacket("short packet on read (corrupted tagcount?)"); readlen=fFileSize-fPosition; + } memcpy(buf,fBuffer+fPosition,readlen); --- SafeFile.cpp 2004-03-23 12:15:33.000000000 -0500 +++ /home/madcat/SafeFile.cpp 2004-03-27 18:18:17.000000000 -0500 @@ -50,5 +50,6 @@ off_t CSafeMemFile::ReadRaw(void* lpBuf,UINT nCount) { if (GetPosition()+nCount > this->GetLength()) { -// AfxThrowFileException(CFileException::endOfFile,0,GetFileName()); + printf("Read after safemem file!!!!\n"); + throw ("short packet on read (corrupted tagcount?)"); return 0; }