Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Valid

The `RAACReleaseOrchestrator::emergencyRevoke()` function does not update the `categoryUsed` value, leading to unreleased assets being permanently locked in the contract.

Summary

The RAACReleaseOrchestrator::emergencyRevoke() function does not update the categoryUsed value, leading to unreleased assets being permanently locked in the contract.

Vulnerability Details

The emergencyRevoke() function is responsible for revoking a beneficiary's vesting schedule and transferring any unreleased tokens back to the contract. However, it fails to update the categoryUsed value, which tracks allocated tokens. As a result, the revoked tokens remain in the contract but are not accounted for, making them inaccessible for future allocations.

function emergencyRevoke(address beneficiary) external onlyRole(EMERGENCY_ROLE) {
VestingSchedule storage schedule = vestingSchedules[beneficiary];
if (!schedule.initialized) revert NoVestingSchedule();
uint256 unreleasedAmount = schedule.totalAmount - schedule.releasedAmount;
delete vestingSchedules[beneficiary];
if (unreleasedAmount > 0) {
raacToken.transfer(address(this), unreleasedAmount);
emit EmergencyWithdraw(beneficiary, unreleasedAmount);
}
emit VestingScheduleRevoked(beneficiary);
}

The function successfully revokes the vesting schedule and retrieves unreleased tokens.
However, it does not adjust the categoryUsed value, which means the revoked tokens remain locked within the contract without being reallocated or accessible.

Impact

Failure to update categoryUsed results in a portion of the contract’s funds being permanently inaccessible, reducing the available supply for future allocations.

Tools Used

Manual Review

Recommendations

Modify emergencyRevoke() to properly update categoryUsed, ensuring that revoked funds can be reallocated for future vesting schedules.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

RAACReleaseOrchestrator::emergencyRevoke fails to decrement categoryUsed, causing artificial category over-allocation and rejection of valid vesting schedules

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

RAACReleaseOrchestrator::emergencyRevoke fails to decrement categoryUsed, causing artificial category over-allocation and rejection of valid vesting schedules

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.