The _safeMint function can potentially call an external contract if the recipient is a smart contract. This external call could lead to a reentrancy attack if the called contract calls back into the RamNFT contract before the Characteristics mapping is updated.
If _safeMint or any subsequent operation in mintRamNFT calls an external contract or allows external code to execute, an attacker could write a malicious contract that re-enters mintRamNFT during the execution, causing the tokenCounter to increment multiple times within a single transaction.
manual testing
Reorder the statements in the mintRamNFT function so that the Characteristics mapping is updated before _safeMint is called.
The problem is that the `mintRamNFT` function is public and anyone can call it, not that the function uses `_safeMint`.
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.