The getUserMemorabiliaDetailed function is designed to return all memorabilia tokens owned by a user, iterating over all collections and items.
The function uses nested unbounded loops over all collection IDs and all item IDs within each collection, with no upper limit enforced
Risk
Likelihood:
This will occur whenever a user or contract calls getUserMemorabiliaDetailed after a large number of collections and/or items have been created.
As the number of collections and items grows, the function will require more gas, eventually exceeding the block gas limit.
Impact:
The function will revert due to out-of-gas, making it unusable for users with many memorabilia tokens.
This can cause frontends or other contracts relying on this function to break or become unresponsive.
Proof of Concept
Recommended Mitigation
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.