Project

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

When tier has amount(max count) of nft - 1, user could not upgradeTier tier

Summary

For upgrade tier, user should have 2 nft, but when tier configuration has amount (max count of nft in this tier) - 1, user could not join twice to tier (have 2 nft).

Vulnerability Details

Each tier has value `amount`, which mean max allowed minted nft in this tier. 1 is also normal value of this variable.

When amount is 1, user could not have 2 nft in this tier, So he could not upgrade tier(call upgradeTier) function.

OR, when user bought 1 nft and tier becomes full, user also could not upgrade his tier.

Impact

User could not upgrade tier die tier configuration

Tools Used

Manual review

Recommendations

Allow user to pay for additional nft, while he call upgradeTier function.

function upgradeTier(address daoMembershipAddress, uint256 fromTierIndex) external {
+ if(daoMembershipAddress].tiers[fromTierIndex].amount == 1) {
+ uint256 tierPrice = daos[daoMembershipAddress].tiers[tierIndex].price;
+ uint256 platformFees = (20 * tierPrice) / 100;
+ IERC20(daos[daoMembershipAddress].currency).transferFrom(_msgSender(), owpWallet, platformFees);
+ IERC20(daos[daoMembershipAddress].currency).transferFrom(_msgSender(), daoMembershipAddress, tierPrice - platformFees);
+ IMembershipERC1155(daoMembershipAddress).burn(_msgSender(), fromTierIndex, 1); // <--- 1
+ }
+ else {
+ IMembershipERC1155(daoMembershipAddress).burn(_msgSender(), fromTierIndex, 2); // <--- 2
+ }
Updates

Lead Judging Commences

0xbrivan2 Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Design choice
0xbrivan2 Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Design choice

Support

FAQs

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

Give us feedback!