The principal address is never initialized or assigned in the contract. In an upgradeable pattern, failing to initialize such privileged roles opens the door to misconfiguration or exploitation (e.g., leaving the role unset or defaulted to address(0)).
If principal is used in access control checks, the logic may be broken or anyone could exploit unset roles depending on implementation elsewhere.
Manual review
Chatgpt
Implement an initialize() function that sets the principal and usdc addresses. Ensure the function includes initializer modifier to prevent re-initialization:
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.