mintProfile() accepts arbitrary values for name, age, and profileImage with no validation. Users can mint profiles with age 0, empty strings, or megabytes of on-chain data.
All three parameters are stored directly without any bounds checking. age = 0 creates a profile for a zero-year-old. Empty name and profileImage strings create a faceless, nameless profile. Arbitrarily long strings are stored on-chain, and tokenURI() encodes all stored data in Base64, so excessively long strings inflate gas costs for anyone reading the token metadata.
Likelihood:
Any user can submit invalid profile data. Bots or griefers can submit empty or absurdly long strings. There is no cost barrier beyond the gas fee.
Impact:
Profiles with age 0 or empty names degrade the dating platform's data quality. A profile with no name and no image is useless but costs the same to process. Very long strings stored on-chain waste permanent storage and inflate tokenURI() gas costs for all consumers.
The test mints a profile with empty name, age 0, and no image — all accepted. It also shows that very long strings (192+ characters) are stored successfully, wasting on-chain storage.
Add basic input validation to enforce reasonable bounds. Setting minimum age to 18 aligns with the dating app context, capping name length prevents storage abuse, and requiring a profile image ensures profiles are meaningful.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.