Core Contracts

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

Timelock expired operations will be marked as pending

Summary

RAAC governance timelockController can return if a specific operation is pending or not but it doesn't take into account expired operations which would be returned as pending

Vulnerability Details

Here is the implementation of isOperationPending

/**
* @notice Returns whether an operation is pending
* @param id Operation ID to check
* @return True if operation is pending
*/
// @audit LOW - Expired operations will be marked as pending for ever
function isOperationPending(
bytes32 id
) public view override returns (bool) {
Operation storage op = _operations[id];
return op.timestamp != 0 && !op.executed;
}

But operations also have expiration with the GRACE_PERIOD

// Check timing conditions
if (block.timestamp < op.timestamp) revert OperationNotReady(id);
if (block.timestamp > op.timestamp + GRACE_PERIOD) revert OperationExpired(id);

So isOperationPending will wrongly return true for operations that are actually expired, returning a wrong state.

Impact

Impact is low, it does not return the correct operation state, returning pending instead of expired.

Recommendations

handle the expired timing condition in operationPending

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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

Give us feedback!