[C++]Fix select/login exploit buffer
Scris: Mar Aug 09, 2022 7:29 pm
Deschide input_login.cpp si caută următoarea funcție:
Înainte de TPlayerLoadPacket player_load_packet;, adaugă:
În funcția void CInputLogin::ChangeName(LPDESC d, const char *. adaugă:
Deasupra liniei:
Adaugă:
Cod: Selectaţi tot
void CInputLogin::CharacterSelect(L
Cod: Selectaţi tot
if (!c_r.players[pinfo->index].dwID) // FIXME
{
sys_err("No player id for login %s", c_r.login);
d->SetPhase(PHASE_CLOSE);
return;
}
Deasupra liniei:
Cod: Selectaţi tot
if (!c_r.players[p->index].bChangeName)
Cod: Selectaţi tot
if (p->index >= PLAYER_PER_ACCOUNT) // FIXME overflow
{
sys_err("index overflow %d, login: %s", p->index, c_r.login);
d->SetPhase(PHASE_CLOSE);
return;
}