Core Contracts

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

categoryUsed is not updated when revokes a vesting schedule in RAACReleaseOrchestrator

Summary

categoryUsed is not updated when revokes a vesting schedule in RAACReleaseOrchestrator.

Vulnerability Details

When emergencyRevoke() is called to revoke a vesting schedule, the corresponding schedule is deleted from vestingSchedules.

RAACReleaseOrchestrator::emergencyRevoke()

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);
}

However, categoryUsed is not updated while it should be supplement by the unreleased amount.

Impact

Incorrect accounting of categoryUsed.

Tools Used

Manual Review

Recommendations

When a vesting schedule is revoked, add the unreleased amount back to categoryUsed.

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.