|
Эта публикация цитируется в 5 научных статьях (всего в 5 статьях)
Поиск ошибок доступа к буферу в программах на языке C/C++
И. А. Дудинаab, В. К. Кошелевb, А. Е. Бородинb a Московский государственный университет имени М.В. Ломоносова
b Институт системного программирования РАН
Аннотация:
В статье рассматривается алгоритм статического анализа для поиска в исходном коде программы ошибок доступа к буферу. Алгоритм использует символьное исполнение с объединением состояний и является чувствительным к путям. Рассматриваются только обращения к буферам, имеющим известный в момент компиляции размер и размещённым в статической памяти либо на стеке. В работе приведено формальное определение ошибки доступа к буферу, возникающей при прохождении некоторой последовательности рёбер графа потока управления программы. Приведён алгоритм, позволяющий для переменных программы суммировать информацию о возможных значениях по всем путям с учётом совместности условий переходов, взаимосвязи переменных через арифметические операции, инструкции преобразования типов, бинарные отношения в условиях переходов. Для инструкций доступа к буферу с помощью вычисленной для переменной индекса информации о возможных значениях вычисляются достаточные условия выхода за границы. Выполнимость достаточных условий проверяется SMT-решателем и, в случае нахождения модели, с её помощью обнаруживается ошибочный путь и выдаётся предупреждение. На основе данного подхода в инструменте статического анализа Svace был реализован межпроцедурный чувствительный к путям детектор ошибок доступа к буферу, способный обнаруживать новые, не покрытые предыдущими реализациями детекторов типы ошибок.
Ключевые слова:
статический анализ, поиск дефектов, переполнение буфера, чувствительность к путям, символьное исполнение.
Образец цитирования:
И. А. Дудина, В. К. Кошелев, А. Е. Бородин, “Поиск ошибок доступа к буферу в программах на языке C/C++”, Труды ИСП РАН, 28:4 (2016), 149–168
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/tisp58 https://www.mathnet.ru/rus/tisp/v28/i4/p149
|
|