Pagina 1 din 1

[C++]Fix select/login exploit buffer

Scris: Mar Aug 09, 2022 7:29 pm
de F. Gabriel
Deschide input_login.cpp si caută următoarea funcție:

Cod: Selectaţi tot

void CInputLogin::CharacterSelect(L
Înainte de TPlayerLoadPacket player_load_packet;, adaugă:

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;
	}
În funcția void CInputLogin::ChangeName(LPDESC d, const char *. adaugă:

Deasupra liniei:

Cod: Selectaţi tot

if (!c_r.players[p->index].bChangeName)
Adaugă:

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;
	}