LPSilo Manual Review Findings

LPSilo Manual Review Findings

LPS-01M: Inexplicable Conditional

Type Severity Location
Logical Fault LPSilo.sol:L54, L55

Description:

The linked conditional will always evaluate as true meaning that the else clause will never be executed.

Example:

protocol/contracts/farm/facets/SiloFacet/LPSilo.sol
47function _depositLP(uint256 amount) internal {
48 updateSilo(msg.sender);
49 uint32 _s = season();
50 uint256 lpb = lpToLPBeans(amount);
51 require(lpb > 0, "Silo: No Beans under LP.");
52 incrementDepositedLP(amount);
53 uint256 seeds = lpb.mul(C.getSeedsPerLPBean());
54 if (season() == _s) depositSiloAssets(msg.sender, seeds, lpb.mul(10000));
55 else depositSiloAssets(msg.sender, seeds, lpb.mul(10000).add(season().sub(_s).mul(seeds)));
56
57 addLPDeposit(msg.sender, _s, amount, lpb.mul(C.getSeedsPerLPBean()));
58
59 LibCheck.lpBalanceCheck();
60}

Recommendation:

We advise this segment of code to be re-evaluated as one of the seasons utilised in the if clause should be different.

Alleviation:

The code was updated to no longer deposit silo assets at a conditional rate.

View Fix on GitHub
Navigated to LPSilo Manual Review Findings