Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: low
Invalid

User can re-register after being approved

Summary

The register function in ThePredicter contract only check pending status. User can register again after being approved by owner.

Vulnerability Details

In register() function, the ThePredicter__CannotParticipateTwice checking only checked the Pending status. Therefore, when approved user could register again.

function register() public payable {
...
if (playersStatus[msg.sender] == Status.Pending) {
revert ThePredicter__CannotParticipateTwice();
}
playersStatus[msg.sender] = Status.Pending;
}

Impact

The missing of checking Status.Approved can make user sign-up again after being approved to predict.

Tools Used

Manual review

Recommendations

The checking statement should be reverted when player status is Pending or Approved.

function register() public payable {
...
- if (playersStatus[msg.sender] == Status.Pending) {
+ if (playersStatus[msg.sender] == Status.Pending || playersStatus[msg.sender] == Status.Approved) {
revert ThePredicter__CannotParticipateTwice();
}
playersStatus[msg.sender] = Status.Pending;
}
Updates

Lead Judging Commences

NightHawK Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

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