_sendFees() Repeat SLOAD shareholders In Loop #57
Labels
bug
Something isn't working
G (Gas Optimization)
sponsor confirmed
Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
Handle
Meta0xNull
Vulnerability details
Impact
_sendFees() repeat Read Storage variable shareholders. Every Storage read is expensive.
Proof of Concept
https://github.com/code-423n4/2021-11-nested/blob/main/contracts/FeeSplitter.sol#L227-L232
Tools Used
Manual Review
Recommended Mitigation Steps
Read the values from storage once, cache them in local variables and then read them again using the local variables. For example:
Shareholder[] shareholders_temp = shareholders;
for (uint256 i = 0; i < shareholders_temp.length; i++) {
_addShares(
shareholders_temp[i].account,
_computeShareCount(_amount, shareholders_temp[i].weight, _totalWeights),
address(_token)
);
The text was updated successfully, but these errors were encountered: