DoS vulnerability (invalid player id spam)

This is a fix for a DoS Vulnerability where invalid player ids are spammed (i.e. HEADER_CG_CHARACTER_SELECT), you can confirm this by looking in the syslog for a bunch of [PLAYER_LOAD] Load from PlayerDB pid[0]


open input_login.cpp and add above

db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));
if (player_load_packet.player_id == 0)
{
sys_err("invalid player_id from account %d\n",c_r.id);
d->DelayedDisconnect(0);
return;
}

it should look like following

if (player_load_packet.player_id == 0)
{
sys_err("invalid player_id from account %d\n",c_r.id);
d->DelayedDisconnect(0);
return;
}
db_clientdesc->DBPacket(HEADER_GD_PLAYER_LOAD, d->GetHandle(), &player_load_packet, sizeof(TPlayerLoadPacket));

search for

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

add above

if (c_r.players[p->index].dwID == 0)
	{
		sys_err("invalid player_id from account %d\n", c_r.id);
		d->DelayedDisconnect(0);
		return;
	}

search for

if (c_r.players[pinfo->player_index].bChangeName)

add above

if (c_r.players[pinfo->player_index].dwID == 0)
	{
		sys_err("invalid player_id from account %d\n", c_r.id);
		d->DelayedDisconnect(0);
		return;
	}

search for

sys_err("EmpireSelectFailed %d", r.players[i].dwID);

add below

d->DelayedDisconnect(0);