Added buffer size check while populating it.

inventory_pr
Nemirtingas 2019-07-14 22:47:33 +02:00
parent 0b134e98a9
commit 7853451b01
1 changed files with 10 additions and 4 deletions

View File

@ -144,17 +144,23 @@ bool GetResultItems( SteamInventoryResult_t resultHandle,
if (pOutItemsArray != nullptr) if (pOutItemsArray != nullptr)
{ {
for (auto& i : items) uint32 max_items = *punOutItemsArraySize;
// We end if we reached the end of items or the end of buffer
for( auto i = items.begin(); i != items.end() && max_items; ++i, --max_items )
{ {
pOutItemsArray->m_iDefinition = i.first; pOutItemsArray->m_iDefinition = i->first;
pOutItemsArray->m_itemId = i.first; pOutItemsArray->m_itemId = i->first;
pOutItemsArray->m_unQuantity = 1; pOutItemsArray->m_unQuantity = 1;
pOutItemsArray->m_unFlags = k_ESteamItemNoTrade; pOutItemsArray->m_unFlags = k_ESteamItemNoTrade;
++pOutItemsArray; ++pOutItemsArray;
} }
*punOutItemsArraySize = std::min(*punOutItemsArraySize, static_cast<uint32>(items.size()));
}
else if (punOutItemsArraySize != nullptr)
{
*punOutItemsArraySize = items.size();
} }
if (punOutItemsArraySize)* punOutItemsArraySize = items.size();
PRINT_DEBUG("GetResultItems good\n"); PRINT_DEBUG("GetResultItems good\n");
return true; return true;
} }