diff --git a/r5dev/engine/client/cl_ents_parse.cpp b/r5dev/engine/client/cl_ents_parse.cpp index 6bf20a9a..91698307 100644 --- a/r5dev/engine/client/cl_ents_parse.cpp +++ b/r5dev/engine/client/cl_ents_parse.cpp @@ -4,12 +4,8 @@ // // $NoKeywords: $ //=============================================================================// - - #include "core/stdafx.h" -#include "tier0/frametask.h" #include "public/const.h" -#include "engine/host.h" #include "engine/client/cl_ents_parse.h" bool CL_CopyExistingEntity(__int64 a1, unsigned int* a2, char* a3) @@ -17,7 +13,13 @@ bool CL_CopyExistingEntity(__int64 a1, unsigned int* a2, char* a3) int nNewEntity = *reinterpret_cast<int*>(a1 + 40); if (nNewEntity >= MAX_EDICTS || nNewEntity < 0) { - v_Host_Error("CL_CopyExistingEntity: m_nNewEntity >= MAX_EDICTS"); + // Value isn't sanitized in release builds for + // every game powered by the Source Engine 1 + // causing read/write outside of array bounds. + // This defect has let to the achievement of a + // full-chain RCE exploit. We hook and perform + // sanity checks for the value of m_nNewEntity + // here to prevent this behavior from happening. return false; } return v_CL_CopyExistingEntity(a1, a2, a3);