The AssertContractInitialized
function should check Initialized
Description
The helper function AssertContractInitialized
is used to ensure that the contract is initialized prior to the execution of some actions:
private void AssertContractInitialized()
{
Assert(State.Admin.Value != null, "Contract not initialized.");
}
However, instead of checking State.Initialized
, it checks whether the admin is null. Although the admin is indeed null when the contract is uninitialized, after initialization, the admin can call ChangeOwner
to set the admin property to null in order to renounce ownership.
Impact
If the admin renounces ownership by calling ChangeOwner
to change the admin to null, then AssertContractInitialized
will erroneously revert.
Recommendations
Compare Supply
against TotalSupply
instead of Issued
.
Alternatively, if this is meant to be a cap on total issued quantity, the property should be renamed to TotalIssued
and logic should be added to increase this constant once the limit is reached.
Remediation
This issue has been acknowledged by Awaken Finance, and a fix was implemented in commit 1eeef4bf↗.