Core Contracts

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

Governance#castVote() can be called when proposal is canceled

Summary

The castVote() allows veToken holders to vote on proposals that have already been canceled.

Vulnerability Details

The castVote does not check whether the proposal has been canceled before allowing votes.

If a proposal is canceled, votes still count but become irrelevant since canceled proposals can never be executed.

This wastes gas fees for voters and can confuse users into believing they are influencing a governance decision.

Impact

veToken holders unknowingly vote on canceled proposals, leading to confusion

Tools Used

manual

Recommendations

Modify castVote() to check if the proposal is canceled before allowing votes.

function castVote(uint256 proposalId, bool support) external override returns (uint256) {
ProposalCore storage proposal = _proposals[proposalId];
+ if (proposal.canceled) revert ProposalCanceled(proposalId, block.timestamp);
if (proposal.startTime == 0) revert("Porposal canceled");
...
}
Updates

Lead Judging Commences

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

Governance::castVote lacks canceled/executed proposal check, allowing users to waste gas voting on proposals that can never be executed

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

Governance::castVote lacks canceled/executed proposal check, allowing users to waste gas voting on proposals that can never be executed

Support

FAQs

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

Give us feedback!