The BuyerAgent
contract contains a permission inconsistency in its purchase functionality where operators are granted access but will always fail at the Swan contract level.
The BuyerAgent.purchase()
function can be called by both owner and operators (through onlyAuthorized
modifier). However, Swan.purchase()
has a strict check requiring msg.sender
to be the listing.buyer
. This means operators will always fail at the Swan
contract level, making the operator permission in BuyerAgent
effectively useless for purchases.
In BuyerAgent contract:
Swan.sol contract
This creates a situation where operators can initiate purchases that will inevitably fail.
Operators can't call the purchase function
Manual review
In Swan::purchase
add authorization for operator
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.