First check for a person to add in second checkList by santa can be bypassed because of default value of ENUM
For a person to be added in s_theListCheckedTwice mapping, that person should be first in s_theListCheckedOnce mapping, but if santa passes an address that is not in s_theListCheckedOnce with NICE status in SantasList::checkTwice then it will pass the check because s_theListCheckedOnce mapping will give default value of ENUM which is 0(in our case) which is NICE by default
//Here is the POC, we are calling directly checkTwice without calling checkList first
Wrong person can be set in s_theListCheckedTwice and that person can mint token
Manual review
There are some ideas protocol can do
Make a false status at 0(default) position like
Adjust NAUGHTY OR NOT_CHECKED_TWICE above, even if someone passed the check they will not be able to collectPresent because only NICE OR EXTRA_NICE people can collect
In Solidity the first element of an enum is the default value. In Santa's List, the means each person is mapped by default to 'NICE'.
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.