From 116553f7df600de7ad60a9cbde37c30e5755f6f0 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sun, 11 Nov 2007 06:50:50 +0000 Subject: [PATCH] fixed bug amb1132 - team finding code crashed ins from null deref --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401679 --- extensions/sdktools/teamnatives.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/extensions/sdktools/teamnatives.cpp b/extensions/sdktools/teamnatives.cpp index a3de00f5..3eac3c68 100644 --- a/extensions/sdktools/teamnatives.cpp +++ b/extensions/sdktools/teamnatives.cpp @@ -84,16 +84,21 @@ void SDKTools::OnServerActivate(edict_t *pEdictList, int edictCount, int clientM ServerClass *pClass = pEdict->GetNetworkable()->GetServerClass(); if (FindTeamEntities(pClass->m_pTable, "DT_Team")) { - static int offset = g_pGameHelpers->FindInSendTable(pClass->GetName(), "m_iTeamNum")->GetOffset(); - CBaseEntity *pEnt = pEdict->GetUnknown()->GetBaseEntity(); - int TeamIndex = *(int *)((unsigned char *)pEnt + offset); + SendProp *pTeamNumProp = g_pGameHelpers->FindInSendTable(pClass->GetName(), "m_iTeamNum"); - if (TeamIndex >= (int)g_Teams.size()) + if (pTeamNumProp != NULL) { - g_Teams.resize(TeamIndex+1); + int offset = pTeamNumProp->GetOffset(); + CBaseEntity *pEnt = pEdict->GetUnknown()->GetBaseEntity(); + int TeamIndex = *(int *)((unsigned char *)pEnt + offset); + + if (TeamIndex >= (int)g_Teams.size()) + { + g_Teams.resize(TeamIndex+1); + } + g_Teams[TeamIndex].ClassName = pClass->GetName(); + g_Teams[TeamIndex].pEnt = pEnt; } - g_Teams[TeamIndex].ClassName = pClass->GetName(); - g_Teams[TeamIndex].pEnt = pEnt; } } }