According to the BEP20 specification, the Approval event:
MUST trigger on any successful call to approve(address _spender, uint256 _value).
However, the implementation of pool LP tokens and synths do not emit the Approval event when the allowance is the maximum number, i.e., type(uint256).max.
Handle
shw
Vulnerability details
Impact
According to the BEP20 specification, the
Approval
event:However, the implementation of pool LP tokens and synths do not emit the
Approval
event when the allowance is the maximum number, i.e.,type(uint256).max
.Proof of Concept
Referenced code: Pool.sol#L101 Synth.sol#L95
Recommended Mitigation Steps
Emit the
Approval
event whenever theapprove
call succeeds, even if the allowance does not change.