uint256 newExchangeRate = s_exchangeRate * (totalSupply() + fee) / totalSupply();
Can be rewritten as 1 + (fee/totalSupply) so if fee < totalSupply this will always round down due to truncation to zero
There are also precision issues in the following code parts as indicated in links
Exchange rate may not grow as expected e.g it may remain 1 as in solidity the 1.125 is not possible as illustrated in example. Additionall mint and underlying amounts to users suffer from precision loss disadvantigin them amounts
Manual Analysis
Introduce some precision factors e.g *10^precision to ensure e,g 1.125 is e,g 1125 and calculate appropriately
Or come up with some better scheme for precision handling and calculations and division aspects
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.