Project

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

Using upgradeTier(), user could join to filled tier

Summary

In function upgradeTier() there is not check, that tier has filled, so user could join to tier anyway.

Vulnerability Details

When user decide to update tier, 2 nfts will burn from his current tier and 1 new nft will mint in highest tier. But there is not check, that highest tier has count of minted nfts is equal to daos[daoMembershipAddress].tiers[tierIndex - 1].amount

Impact

User could join to tier anyway, which breaks the logic that is in the function joinDAO(), which have such check.

Tools Used

Manual review

Recommendations

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(daos[daoMembershipAddress].tiers[fromTierIndex - 1].amount > daos[daoMembershipAddress].tiers[fromTierIndex - 1].minted, "Tier full.")
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 about 1 year ago
Submission Judgement Published
Invalidated
Reason: Known issue

Support

FAQs

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

Give us feedback!