Assessment reports>Concrete>Informational findings>Unchecked return value in ,setParkingLot
Category: Coding Mistakes

Unchecked return value in setParkingLot

Informational Impact
Informational Severity
N/A Likelihood

Description

The setParkingLot function in the ConcreteMultiStrategyVault contract does not check the successfulApproval boolean returned by TokenHelper.attemptForceApprove. If the approval fails, subsequent deposits to the parking lot will revert.

function setParkingLot(address parkingLot_) external onlyOwner {
    // [...]
    bool successfulApproval = TokenHelper.attemptForceApprove(token, parkingLot_, type(uint256).max, false);
    emit ParkingLotUpdated(currentParkingLot, parkingLot_, successfulApproval);

    parkingLot = IParkingLot(parkingLot_); // Update the fee recipient
}

Impact

If the approval fails, the contract still updates parkingLot to the new address. Since the vault requires token approval to deposit into the parking lot, all future parking-lot deposit attempts will fail.

Recommendations

Verify that the approval succeeds.

function setParkingLot(address parkingLot_) external onlyOwner {
    // [...]
    bool successfulApproval = TokenHelper.attemptForceApprove(token, parkingLot_, type(uint256).max, false);
+   require(successfulApproval, "Approve failed");
    // [...]
}

Remediation

This issue has been acknowledged by Blueprint Finance, and a fix was implemented in commit 7b237030.

Zellic © 2025Back to top ↑