Missing token transfer allows user to never lose any tokens.
goOnStageOrBattle
and _battle
functions do not transfer the challenger's credTokens
for bet. Attacker can use this missing transfer in a way such that attacker does not give RapBattle
contract allowance
. Without the allowance
, RapBattle
contract cannot transfer credTokens to winner if defender wins and the transaction will revert due to the line given below.
But if, attacker wins the battle, he can get defender's credTokens from defenderBet as defender has already given RapBattle
contract allowance to transfer his tokens. This way, challenger never loses any credTokens irrespective of the result of Rap Battle, whether he wins or loses.
If the attacker loses the bet, he will not lose credTokens.
Defender can never win.
Battle can only proceed further when attacker wins the battle and gain the credTokens.
Manual Review
Add the below code in goOnStageOrBattle
function -
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.