Summary
Vulnerability Details
Consider using OpenZeppelin’s SafeCast library to prevent unexpected overflows when casting from various type int/uint values
File: contracts/facets/ERC721Facet.sol
162: LibShortRecord.transferShortRecord(asset, from, to, uint40(tokenId), nft);
Link to code
File: contracts/facets/MarginCallPrimaryFacet.sol
284: return a < b ? uint88(a) : b;
Link to code
File: contracts/facets/MarginCallSecondaryFacet.sol
192: return a < b ? uint88(a) : b;
Link to code
File: contracts/facets/OwnerFacet.sol
281: s.bridge[bridge].vault = uint8(vault);
Link to code
File: contracts/facets/YieldFacet.sol
142: VaultUser.dittoReward += uint80(dittoReward);
170: Vault.dittoMatchedTime = uint16(protocolTime);
178: VaultUser.dittoReward += uint80(userReward);
Link to code
File: contracts/libraries/LibOracle.sol
56: uint256 priceInEth = uint256(price).div(uint256(basePrice));
56: uint256 priceInEth = uint256(price).div(uint256(basePrice));
136: s.bids[asset][Constants.HEAD].ercAmount = uint80(oraclePrice);
Link to code
Impact
Possible overflows
Tools Used
Manual
Recommendations
Consider using OpenZeppelin’s SafeCast library to prevent unexpected overflows when casting from various type int/uint values