Skip to content

Commit 187eb31

Browse files
SergeanurMarek Kulik
authored andcommitted
Fixed CModelInfoSA exceeding an array's boundaries (#155)
1 parent 4019fed commit 187eb31

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Client/game_sa/CModelInfoSA.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -485,17 +485,21 @@ BOOL CModelInfoSA::IsLoaded ( )
485485

486486
BOOL CModelInfoSA::DoIsLoaded ( )
487487
{
488-
DEBUG_TRACE("BOOL CModelInfoSA::IsLoaded ( )");
488+
DEBUG_TRACE("BOOL CModelInfoSA::DoIsLoaded ( )");
489489

490490
//return (BOOL)*(BYTE *)(ARRAY_ModelLoaded + 20*dwModelID);
491491
BOOL bLoaded = pGame->GetStreaming()->HasModelLoaded(m_dwModelID);
492-
m_pInterface = ppModelInfo [ m_dwModelID ];
493492

494-
if ( bLoaded && m_dwModelID < 20000 )
493+
if ( m_dwModelID < 20000 )
495494
{
496-
// Check rw object is there
497-
if ( !m_pInterface || !m_pInterface->pRwObject )
498-
return false;
495+
m_pInterface = ppModelInfo[m_dwModelID];
496+
497+
if ( bLoaded )
498+
{
499+
// Check rw object is there
500+
if (!m_pInterface || !m_pInterface->pRwObject)
501+
return false;
502+
}
499503
}
500504
return bLoaded;
501505
}
@@ -532,6 +536,7 @@ CBoundingBox * CModelInfoSA::GetBoundingBox ( )
532536

533537
bool CModelInfoSA::IsValid ( )
534538
{
539+
if ( m_dwModelID >= 20000 && m_dwModelID < MODELINFO_MAX ) return true;
535540
return ppModelInfo [ m_dwModelID ] != 0;
536541
}
537542

0 commit comments

Comments
 (0)