Реклама

Исследователи из Массачусетского технологического института объявили о разработке автоматизированной системы поиска ошибок переполнения целочисленного типа, работающей значительно эффективнее других.

Система получила название DIODE. Она осуществляет символьное выполнение программы, обходя ее граф и останавливаясь на потенциально опасных с точки зрения переполнения целого операциях, в частности, на резервированиях памяти. На этих точках путем анализа символьного выражения определяется, какое значение переменной вызовет переполнение. Если в программе предусмотрена проверка границ, и это значение не проходит ее, система вводит дополнительные ограничения в символьное выражение и определяет новое значение переменной, вызывающее переполнение. Этот процесс продолжается до тех пор, пока либо не найдется значение, удовлетворяющее условиям проверки, но все же вызывающее переполнение, либо пока не выяснится, что переполнение невозможно.

DIODE не нужен исходный код отлаживаемой программы — система работает с двоичными исполняемыми файлами, выдавая в качестве результатов входные значения, которые вызывают переполнения, и точки, на которых это происходит.