Ich bräuchte dif für 41K Revision :/ wäre mega wenn jemand eine hätte :0
This difference file has been created by IDA Pro
game
0018C7C8: 01 00
This difference file has been created by IDA Pro
db
00076598: 01 00
Gibt wohl doch noch welche, die nicht mit dem Source arbeiten.Quote:
Fixx für die 404 revision :
PHP Code:This difference file has been created by IDA Pro
game
0018C7C8: 01 00
AsyncSQL connect funktion auf 0 also player DB wird nicht gelöscht x)PHP Code:This difference file has been created by IDA Pro
db
00076598: 01 00
Bitte um HilfeQuote:
Some updates from the WoM2 side:
So hier mal ein paar Neuigkeiten von WoM2:
[For developers mostly | Hauptsächlich für Entwickler]
A nicer way to fix the original vulnerability and even save some queries (YAAYYYY!) is:
Eine bessere Lösung um die Originallücke zu stopfen und um ein paar Abfragen zu sparen ist die folgende:
Search for the following text in MessengerManager::RemoveFromList:
Sucht nach dem folgenden Text in ^
and add the following lines below of that:Code:if (companion.size() == 0) return;
und fügt die folgenden Zeilen danach ein:
Then add the following function to messenger_manager.cpp:Code:if (!IsInList(account, companion)) return;
Jetzt könnt ihr die folgende Funktion in der ^ hinzufügen:
and ofc dont forget to declare it in messenger_manager.h:Code:bool MessengerManager::IsInList(MessengerManager::keyA account, MessengerManager::keyA companion) { if (m_Relation.find(account) == m_Relation.end()) return false; if (m_Relation[account].empty()) return false; return m_Relation[account].find(companion) != m_Relation[account].end(); }
und natürlich auch nicht vergessen diese in ^ zu deklarieren:
PS: Der Original fix ist nicht schlecht lediglich etwas am Ziel vorbei (funktionieren tut er auch)Code:bool IsInList(MessengerManager::keyA account, MessengerManager::keyA companion);
PS: The original fix is not bad its just a little bit over the top (it works perfectly fine )
Kind regards
Mit freundlichen Grüßen
MartPwnS for WoM2
#ifndef __INC_MESSENGER_MANAGER_H
#define __INC_MESSENGER_MANAGER_H
#include "db.h"
class MessengerManager : public singleton<MessengerManager>
{
public:
typedef std::string keyT;
typedef const std::string & keyA;
MessengerManager();
virtual ~MessengerManager();
public:
void P2PLogin(keyA account);
void P2PLogout(keyA account);
void Login(keyA account);
void Logout(keyA account);
void RequestToAdd(LPCHARACTER ch, LPCHARACTER target);
void AuthToAdd(keyA account, keyA companion, bool bDeny);
void __AddToList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드
void AddToList(keyA account, keyA companion);
void __RemoveFromList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드
void RemoveFromList(keyA account, keyA companion);
void RemoveAllList(keyA account);
void Initialize();
private:
void SendList(keyA account);
void SendLogin(keyA account, keyA companion);
void SendLogout(keyA account, keyA companion);
void LoadList(SQLMsg * pmsg);
void Destroy();
std::set<keyT> m_set_loginAccount;
std::map<keyT, std::set<keyT> > m_Relation;
std::map<keyT, std::set<keyT> > m_InverseRelation;
std::set<DWORD> m_set_requestToAdd;
bool IsInList(MessengerManager::keyA account, MessengerManager::keyA companion);
};
#endif