sherlock-audit / 2024-03-arrakis-judging

2 stars 2 forks source link

Inefficient Input Validation in `mint` and `burn` Functions #92

Closed sherlock-admin3 closed 4 months ago

sherlock-admin3 commented 4 months ago

Inefficient Input Validation in mint and burn Functions

Low/Info issue submitted by NoOne

Summary

The mint and burn functions in the contract are designed to handle the minting and burning of shares of a vault position. Both functions include checks for a zero address (receiver_ == address(0)), but these checks are performed after some initial computations and logic. This can lead to inefficiencies and potential security issues. The recommended approach is to move these checks to the beginning of the functions.

Vulnerability Detail

Both the mint and burn functions perform the check for a zero address(receiver_ == address(0)) after some initial computations and logic. This can result in wasted gas and unnecessary computations if the function is eventually going to revert due to an invalid receiver address. By moving these checks to the beginning of the functions, we can ensure that invalid input is detected immediately, following the fail-fast principle and improving both security and efficiency.

Impact

Increased Gas Costs: Performing computations and checks before validating the receiver address can result in unnecessary gas consumption if the transaction ultimately reverts due to an invalid address. Potential Security Risks: While the current implementation does not seem to introduce a direct security vulnerability, delaying input validation can open up subtle bugs or vulnerabilities in more complex contracts.

Code Snippet

https://github.com/sherlock-audit/2024-03-arrakis/blob/main/arrakis-modular/src/ArrakisMetaVaultPublic.sol#L91 https://github.com/sherlock-audit/2024-03-arrakis/blob/main/arrakis-modular/src/ArrakisMetaVaultPublic.sol#L62

Tool used

Manual Review

Recommendation

To resolve this issue, move the check for the zero address (receiver_ == address(0)) to the beginning of both the mint and burnfunctions. This ensures that the functions fail fast and avoid unnecessary computations if the receiver address is invalid.