Here are 3 to begin with, I'm going to update this thread accordingly.
Housing Crash:
In the function CHousing::IsSetupAble add
Code:
if(housingInfo.bSetup)
{
if(pItemPropReq->dwItemKind3 != IK3_WALLPAPER && pItemPropReq->dwItemKind3 != IK3_CARPET)
{
if(!pWorld->VecInWorld(housingInfo.vPos))
{
return FALSE;
}
}
}
Code:
ItemProp* pItemPropReq = prj.GetItemProp( housingInfo.dwItemId ); if( !pItemPropReq ) return FALSE;
Issue: Trying to delete not spawned object
Further prevention: Check all AddObj calls return value for true and invalidate the object if false is returned.
BuyItem Dupe:
In the function CDPSrvr::OnBuyItem add
Code:
long long lEntireCost = nNum * nCost;
if(lEntireCost > INT_MAX)
{
return;
}
Code:
#if __VER >= 11 // __MA_VER11_02 if( pItemElem->m_dwItemId == II_SYS_SYS_SCR_PERIN ) nCost = PERIN_VALUE; #endif //__MA_VER11_02 if( nCost < 1 ) nCost = 1;
Issue: Int overflow
Consignment Stat Stack (WurstbrotQT Consignment):
In the function CConsignmentMng::AddItem add
Code:
if(pVendor->m_Inventory.IsEquip(dwItemId))
{
return
}
Code:
if( nCount <= 0 || nCount > pItemElem->m_nItemNum ) return false;
Issue: Removing an equipped item






