#34959 [SC-Low] `mintDebt` returns a wrong value
Submitted on Sep 1st 2024 at 21:26:18 UTC by @Bx4 for Audit Comp | Acre
Report ID: #34959
Report Type: Smart Contract
Report severity: Low
Target: https://sepolia.etherscan.io/address/0x7e184179b1F95A9ca398E6a16127f06b81Cb37a3
Impacts:
Contract fails to deliver promised returns, but doesn't lose value
wrong return value
Description
Brief/Intro
In `mintDebt` it returns `shares` but it is rather supposed to return assets
Vulnerability Details
In `mintDebt` it returns `shares` as seen below `return shares;` meanwhile it is stated in the function natspec to return assets as seen below `/// @return assets The debt amount in asset taken for the shares minted.` Also, it is seen in the function declaration that it returns assets as shown below ` function mintDebt( uint256 shares, address receiver) public whenNotPaused returns (uint256 assets){} ` However the return statement declared last will overwrite it.
Impact Details
it will return a wrong value and it will break the ERC 4626 invariant because it is stated that mint functions return assets as seen in this link.
References
https://github.com/thesis/acre/blob/c3790ef2d4a5a11ae1cadcdaf72ce538b8d67dd3/solidity/contracts/stBTC.sol#L307
Proof of Concept
Proof of Concept
from the comment(@return) and the return value of the `mintDebt` function below
```solidity /// @return assets The debt amount in asset taken for the shares minted. function mintDebt( uint256 shares, address receiver ) public whenNotPaused returns (uint256 assets) {
...
@-> return shares; } ```
we can deduce that the return value is supposed to be assets and yes in the function declaration it returns `uint256 assets`, However the last return statement will overwrite it and return shares