Assessment reports>Metavest>Medium findings>The grantee cannot revoke consent to the amendment
Category: Coding Mistakes

The grantee cannot revoke consent to the amendment

Medium Severity
Medium Impact
High Likelihood

Description

Before performing any amendment to a grantee's MetaVesT, the controller must propose a proposal and wait for the grantees to consent. The proposal can be consented either by the affected grantee calling the function consentToMetavestAmendment or by grantees with the same MetaVesTed token voting in the function voteOnMetavestAmendment.

In the function consentToMetavestAmendment, grantees should be able to revoke the consent via the parameter _inFavor. However, the actual setting does not use this parameter, causing the function to only consent to the amendment.

/// @param _inFavor whether msg.sender consents to the applicable amending function call (rather than assuming true, this param allows a grantee to later revoke decision should 'authority' delay or breach agreement elsewhere)
function consentToMetavestAmendment(address _grant, bytes4 _msgSig, bool _inFavor) external {
    // [...]
!   functionToGranteeToAmendmentPending[_msgSig][_grant].inFavor = true;
    emit MetaVesTController_AmendmentConsentUpdated(_msgSig, msg.sender, _inFavor);
}

Impact

Since function consentToMetavestAmendment always sets inFavor to true, once grantees consent to the amendment, they cannot revoke the decision.

Recommendations

Use _inFavor to set functionToGranteeToAmendmentPending[_msgSig][_grant].inFavor instead of true.

Remediation

This issue has been acknowledged by MetaLeX Labs, Inc, and a fix was implemented in commit ffdc5180.

Zellic © 2024Back to top ↑