RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2023, том 35, выпуск 6, страницы 121–134 (Mi tisp836)

Обнаружение возможной перезаписи переменных вследствие использования функций нелокальных переходов

Н. Ю. Шугалейab, В. А. Иванишинa, А. В. Монаковa

a Институт системного программирования им. В.П. Иванникова РАН
b Московский физико-технический институт

Аннотация: Причиной возникновения неопределенного поведения является исходный код, написанный с нарушением стандарта языка Си. Неопределенное поведение приводит к появлению уязвимостей в программном обеспечении. Одним из распространенных источников неопределенного поведения является некорректное использование функций нелокальных переходов (в частности setjmp и longjmp). В данной работе рассмотрены средства обнаружения такого типа неопределенного поведения, реализованные в основных современных компиляторах (GCC, Clang, MSVC). Сделаны выводы о том, что эти средства обладают существенными недостатками либо вовсе отсутствуют в отдельных компиляторах. Описана реализация нового метода компиляторной диагностики рассматриваемого неопределенного поведения. Приведенный в работе метод обладает точностью, достаточной для практического применения на реальных проектах. Рассмотрены преимущества представленного решения над похожими существующими.

Ключевые слова: компиляторы, си, нелокальные переходы, setjmp, volatile, неопределенное поведение, статический анализ

DOI: 10.15514/ISPRAS-2023-35(6)-7



© МИАН, 2024