Beginner FriendlyFoundryNFT
100 EXP
View results
Submission Details
Severity: low
Valid

Incorrect `Battle` event emission inside `RapBattle::_battle` emits incorrect winner address.

Summary

The event being emitted inside RapBattle::_battle contains incorrect logic to get the winner, thus emitting incorrect winner in some scenario.

Vulnerability Details

The event emitted inside RapBattle::_battle is incorrect as for the winner parameter it will emit incorrect winner in certain scenario.

The condition for winning the battle is:

random <= defenderRapperSkill -> defenderRapperSkill wins, otherwise they lose

But the event being emitted is:

emit Battle(msg.sender, _tokenId, random < defenderRapperSkill ? _defender : msg.sender);

Here it emit _defender as winner if random <= defenderRapperSkill but it has incorrect check.

Impact

Emits incorrect winner when random == defenderRapperSkill as msg.sender instead of _defender

Tools Used

Manual Review

Recommendations

Correct the winner parameter for Battle event

- emit Battle(msg.sender, _tokenId, random < defenderRapperSkill ? _defender : msg.sender);
+ emit Battle(msg.sender, _tokenId, random <= defenderRapperSkill ? _defender : msg.sender);
Updates

Lead Judging Commences

inallhonesty Lead Judge over 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

Contradictory battle result event

Support

FAQs

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