fix mass dc exploit by blocking empty voice packets
This commit is contained in:
parent
2d750744e6
commit
a29a884671
@ -48,6 +48,7 @@
|
||||
|
||||
ConVar g_SmVoiceAddr("sm_voice_addr", "127.0.0.1", FCVAR_PROTECTED, "Voice server listen ip address.");
|
||||
ConVar g_SmVoicePort("sm_voice_port", "27020", FCVAR_PROTECTED, "Voice server listen port.", true, 1025.0, true, 65535.0);
|
||||
ConVar g_SmVoiceLogging("sm_voice_logging", "0", FCVAR_PROTECTED, "Log voice packets.");
|
||||
|
||||
/**
|
||||
* @file extension.cpp
|
||||
@ -438,9 +439,21 @@ void CVoice::OnGameFrame(bool simulating)
|
||||
memset(g_aFrameVoiceBytes, 0, sizeof(g_aFrameVoiceBytes));
|
||||
}
|
||||
|
||||
|
||||
bool CVoice::OnBroadcastVoiceData(IClient *pClient, int nBytes, char *data)
|
||||
{
|
||||
int client = pClient->GetPlayerSlot() + 1;
|
||||
IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(client);
|
||||
|
||||
if(nBytes < 1)
|
||||
{
|
||||
smutils->LogMessage(myself, "%s (%s): Empty voice packet", pPlayer->GetName(), pPlayer->GetSteam2Id(true), data);
|
||||
return false;
|
||||
}
|
||||
|
||||
// this is to log all voice packet
|
||||
if (g_SmVoiceLogging.GetInt())
|
||||
smutils->LogMessage(myself, "%s (%s): %s", pPlayer->GetName(), pPlayer->GetSteam2Id(true), data);
|
||||
|
||||
g_fLastVoiceData[client] = gpGlobals->curtime;
|
||||
|
||||
@ -451,7 +464,6 @@ bool CVoice::OnBroadcastVoiceData(IClient *pClient, int nBytes, char *data)
|
||||
{
|
||||
if(g_aFrameVoiceBytes[client] > NET_MAX_VOICE_BYTES_FRAME_LOG)
|
||||
{
|
||||
IGamePlayer *pPlayer = playerhelpers->GetGamePlayer(client);
|
||||
smutils->LogMessage(myself, "%s (%s) voice overflow! %d > %d\n", pPlayer->GetName(), pPlayer->GetSteam2Id(true), g_aFrameVoiceBytes[client], NET_MAX_VOICE_BYTES_FRAME);
|
||||
}
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user