Пример автоматического аудита: flawfinder

flawfinder — сканер общего назначения для поиска потенциальных утечек в исходном коде на C и C++.

Запуск flawfinder

Запуск flawfinder довольно прост. Нужно вызвать flawfinder с именем каталога или файлами, которые следует проверить. Если передано имя каталога, то будут проверены все файлы с исходным кодом, которые будут найдены в этом каталоге.

Дополнительно к переданному программе списку файлов или каталогов имеется несколько параметров командной строки, которые используются для управления поведением программы.

Каждый из этих параметров описан в справочной странице, но следующие параметры особенно полезны и будут использоваться в нашем примере:

Для вывода файла HTML, содержащего результат работы программы, в котором отражены только функции с «высоким риском», можно использовать следующую команду:

flawfinder --html --context --minlevel=4 test.c > output.html

Результаты

Запуск flawfinder с нашим примером выдает следующий вывод:


Examining test.c

Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)


Анализ вывода

Как и вывод RATS, этот отчёт о проверке очень прост для чтения. Он ясно показывает функции, которые являются потенциально опасными, а также описание проблемы.

Включение контекстной информации также очень полезно, поскольку сразу же обращает ваше внимание на соответствующие области кода, либо исключает другие сообщения как некорректные.

Анализ нашего примера довольно умён в том смысле, что не предупреждает о каждом использовании проблемной strcpy функции — а лишь о тех использованиях, которые, как это предполагается, потенциально опасны.

Таким образом, программа сумела выделить все недостатки нашего кода без ложных срабатываний.


Назад на страницу проекта по аудиту | Назад на страницу примеров аудита