Assessment reports>Definitive>Threat Model>redeemUnderlying

Function: redeemUnderlying(uint256 shares, uint256[] minAmounts, address receiver, address _owner)

This redeems multiple underlying assets for a given number of shares.

Inputs

  • shares

    • Control: Full.

    • Constraints: Must be less than or equal to the owner's vault-share balance.

    • Impact: The number of the owner's shares that will be burned.

  • minAmounts

    • Control: Full.

    • Constraints: N/A.

    • Impact: minAmounts.

  • receiver

    • Control: Full.

    • Constraints: Needs to be a valid, nonzero address.

    • Impact: Address to receive underlying assets.

  • _owner

    • Control: Full.

    • Constraints: Must have share balance greater than or equal to shares.

    • Impact: Accounts whose shares will be burned in exchange for the asset.

Branches and code coverage (including function calls)

Intended branches

  • Should burn shares when invoking redeemUnderlying() with LP tokens.

Negative behavior

  • redeemUnderlying() should NOT revert when in safe harbor mode.

  • previewRedeem() should not revert when in safe harbor mode.

  • maxRedeem() should not revert when in safe harbor mode.

Function call analysis

  • rootFunction -> maxRedeem(address)

    • What is controllable? N/A.

    • If return value controllable, how is it used and how can it go wrong? N/A.

    • What happens if it reverts, reenters, or does other unusual control flow? N/A.

  • rootFunction -> previewRedeem(uint256)

    • What is controllable? N/A.

    • If return value controllable, how is it used and how can it go wrong? N/A.

    • What happens if it reverts, reenters, or does other unusual control flow? N/A.

Zellic © 2025Back to top ↑