У меня очень простая C-программа с потенциальным переполнением буфера, используя strcpy
:
#include <string.h>
#include <stdio.h>
void buffer_overflow(char* dst, const char* src)
{
strcpy(dst, src);
}
int main(int argc, char** argv)
{
if(argc == 2)
{
char buffer[16] = {0};
buffer_overflow(buffer, argv[1]);
printf("[%d]: %s", (int)strlen(buffer), buffer);
}
return 0;
}
Ни статический анализатор clang (использующий scan-build gcc -O0 -g3 -gdwarf-2
), ни cppcheck (использующий cppcheck --enable=warning,style
) не находят это как проблему.
Я просто слишком много спрашиваю из своих инструментов статического анализа?