|
Обнаружение возможной перезаписи переменных вследствие использования функций нелокальных переходов
Н. Ю. Шугалейab, В. А. Иванишинa, А. В. Монаковa a Институт системного программирования им. В.П. Иванникова РАН
b Московский физико-технический институт
Аннотация:
Причиной возникновения неопределенного поведения является исходный код, написанный с нарушением стандарта языка Си. Неопределенное поведение приводит к появлению уязвимостей в программном обеспечении. Одним из распространенных источников неопределенного поведения является некорректное использование функций нелокальных переходов (в частности setjmp и longjmp). В данной работе рассмотрены средства обнаружения такого типа неопределенного поведения, реализованные в основных современных компиляторах (GCC, Clang, MSVC). Сделаны выводы о том, что эти средства обладают существенными недостатками либо вовсе отсутствуют в отдельных компиляторах. Описана реализация нового метода компиляторной диагностики рассматриваемого неопределенного поведения. Приведенный в работе метод обладает точностью, достаточной для практического применения на реальных проектах. Рассмотрены преимущества представленного решения над похожими существующими.
Ключевые слова:
компиляторы, си, нелокальные переходы, setjmp, volatile, неопределенное поведение, статический анализ
Образец цитирования:
Н. Ю. Шугалей, В. А. Иванишин, А. В. Монаков, “Обнаружение возможной перезаписи переменных вследствие использования функций нелокальных переходов”, Труды ИСП РАН, 35:6 (2023), 121–134
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp836 https://www.mathnet.ru/rus/tisp/v35/i6/p121
|
|