Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: low
Invalid

[L-1] The `MondrianWallet::tokenURI` function may return an empty string

Description

The MondrianWallet::tokenURI is designed to return one of four Mondrian art token URI's but it returns an empty string in some cases which is unexpected

Impact

The Owners may not be able to get their corresponding tokens URI when they call MondrianWallet::tokenURI function

Proof of Concept

In the MondrianWallet::tokenURI function the token URI is selected by the statement uint256 modNumber = tokenId % 10 but since there are only 4 possible Mondrian Arts so the token URI returns an empty string in 6 out of 10 cases

function tokenURI(uint256 tokenId) public view override returns (string memory) {
if (ownerOf(tokenId) == address(0)) {
revert MondrainWallet__InvalidTokenId();
}
@> uint256 modNumber = tokenId % 10;
if (modNumber == 0) {
return ART_ONE;
} else if (modNumber == 1) {
return ART_TWO;
} else if (modNumber == 2) {
return ART_THREE;
} else {
return ART_FOUR;
}
}

Recommended Mitigation

Make the following changes in MondrianWallet::tokenURIfunction

function tokenURI(uint256 tokenId) public view override returns (string memory) {
if (ownerOf(tokenId) == address(0)) {
revert MondrainWallet__InvalidTokenId();
}
- uint256 modNumber = tokenId % 10;
+ uint256 modNumber = tokenId % 4;
if (modNumber == 0) {
return ART_ONE;
} else if (modNumber == 1) {
return ART_TWO;
} else if (modNumber == 2) {
return ART_THREE;
} else {
return ART_FOUR;
}
}
Updates

Lead Judging Commences

inallhonesty Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

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