Project

One World
NFTDeFi
15,000 USDC
View results
Submission Details
Severity: low
Invalid

MemberhsipFactory.upgradeTier() reverts with no custom error if fromTierIndex = 0

Summary

MembershipFactory.upgradeTier() reverts with no custom error if fromTierIndex = 0

Vulnerability Details

When trying to call MembershipFactory.upgradeTier() with fromTierIndex parameter equal to 0, function will revert when trying to mint(fromTierIndex - 1), as mint() expects a uint256, which cannot be negative.

Impact

Function upgradeTier() reverts without a custom message that indicates why the error happenned, this does not comply with good practices of contract development.

Tools Used

Manual review

Recommendations

Add a new require code line for this situation:

function upgradeTier(address daoMembershipAddress, uint256 fromTierIndex) external {
require(daos[daoMembershipAddress].daoType == DAOType.SPONSORED, "Upgrade not allowed.");
require(daos[daoMembershipAddress].noOfTiers >= fromTierIndex + 1, "No higher tier available.");
+ require(fromTierIndex > 0, "Cannot upgrade from tier 0");
IMembershipERC1155(daoMembershipAddress).burn(_msgSender(), fromTierIndex, 2);
IMembershipERC1155(daoMembershipAddress).mint(_msgSender(), fromTierIndex - 1, 1);
emit UserJoinedDAO(_msgSender(), daoMembershipAddress, fromTierIndex - 1);
}
Updates

Lead Judging Commences

0xbrivan2 Lead Judge 12 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity
0xbrivan2 Lead Judge 12 months ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.