The GivingThanks contract was originally implemented without leveraging OpenZeppelin's Ownable contract for ownership management. Instead, it manually defined address public owner and set owner = msg.sender in the constructor. This approach was intended to restrict certain functionalities to the contract owner but lacked the robustness of the Ownable contract provided by OpenZeppelin.
The contract initially declared address public owner; and set owner = msg.sender; in the constructor.
It did not use OpenZeppelin's Ownable contract, leading to a lack of standard ownership modifiers like onlyOwner.
You don't need to set owner = msg.sender; manually if you inherit from Ownable because the Ownable constructor already sets the owner to the deployer's address.
Missing onlyOwner modifier for functions that should be restricted.
The contract fails to enforce the correct access control, leading to potential misuse.
Manual Review
Changed the contract definition
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.