Summary
getCreditForMarketId uses loops without gas limit considerations, risking DOS.
Vulnerability Details
function getCreditForMarketId(uint256 marketId) public view returns (uint256) {
uint256 totalCredit;
for (uint256 i = 0; i < allVaults.length; i++) {
if (vaultSupportsMarket(allVaults[i], marketId)) {
totalCredit += vaults[allVaults[i]].liquidity;
}
}
return totalCredit;
}
Impact
Tools Used
Recommendations
function getCreditPaginated(uint256 marketId, uint256 start, uint256 end) public view returns (uint256) {
uint256 totalCredit;
end = Math.min(end, allVaults.length);
for (uint256 i = start; i < end; i++) {
if (vaultSupportsMarket(allVaults[i], marketId)) {
totalCredit += vaults[allVaults[i]].liquidity;
}
}
return totalCredit;
}