Релиз Clang с новой технологией проверки безопасности кода

Увидел свет новый выпуск являющегося частью проекта LLVM компилятора Clang с технологией SAFECode.

Данная технология предназначена для отслеживания возможных проблем работы с памятью в разрабатываемом приложении, при этом не изменяет поведение компилятора, когда неактивна. Включить её можно через указание специального ключа командной строки при сборке. Преимуществами по сравнению с таким инструментом как Valgrind являются:

  • более информативные сообщения об ошибках;
  • возможность оптимизации некоторых run-time проверок;
  • отсутствие динамической трансляции как у Valgrind;
  • более точно определяет структуру программы, так как знает расположение границ отдельного стека и глобальных объектов (для поиска данных границ Valgrind использует эвристические методы).

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

  • выявление некорректного доступа к памяти (указатели на несуществующий или удаленный объект);
  • определение неправильных вызовов функции free(), например, двойное освобождение выделенной памяти;
  • определение использования неинициализированных указателей;
  • выявление ошибок при работе с памятью, вызванных неправильным использованием функций стандартной библиотеки;
  • дополнительные оптимизации, включая удаление проверок корректности типов на этапе загрузки/сохранения и вынос за пределы циклов.

Clang это фронт-энд компиляторов С/С++, Objective-C, который разрабатывается на замену GCC в BSD-системах. Интересен может быть также крупным корпорациям благодаря лицензии BSD. При помощи Clang уже удалось собрать ядро Linux и фреймворк Qt

>>> Исходный код

>>> Страница проекта

©  Linux.org.ru