Stack
Источник: MIT

Специалисты Массачусетского технологического института написали утилиту Stack, помогающую не «потерять» ценные проверки программ на Си/С++ на защищенность, которые компиляторами могут быть приняты за «мертвый» — никогда не исполняемый — код. Типичный пример, объясняют авторы утилиты, — упрощенная проверка на целочисленное переполнение «if a + b > a» вместо «if a > int_max — b»; программисты могут пользоваться первым вариантом, рассчитывая, что в случае превышения максимального для целых чисел объема памяти лишние биты значения суммы будут просто «отрезаться», и в результате получится меньшее число. Однако некоторые современные компиляторы вместо важной проверки «видят» код, который никогда не выполнится, и отбрасывают его. Stack же «знает» все подобные приемы, а также код, для которого поведение языка программирования не определено спецификацией, и, просмотрев вашу программу, укажет на все возможные в этой связи ошибки. Программисты Intel, пользующиеся Stack, признают, что у утилиты чрезвычайно низкий уровень ложноположительных срабатываний.

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF