Adds a fuzz test for string comparison.
This takes in two strings with associated lengths.
Verifies each string contains at least one character, and that the last character is the null terminator.
Then, finds the first instance where one of the following does not hold:
- i < min(size1, size2)
- s1[i] == s2[i]
- s1[i] != '\0'
The result of strcmp is then compared to the value of the difference between s1[i] and s2[i]. For thoroughness, the operands are reversed and also checked.
I see Paula's comment related to this but I would like to drive this more strongly: The only headers not part of LLVM libc that are OK to include are the freestanding C headers, and the headers provided by the compiler (like stdatomic.h).