Голландский разработчик OpenBSD Отто Моэрбик (Otto Moerbeek) обнаружил и исправил ошибку, корни которой восходят к AT&T-версии Unix выпуска 1975 года. OpenBSD — вариант операционной системы BSD (Berkeley Software Distribution), широко распространенной ОС с открытым исходным кодом. На основе BSD разработаны FreeBSD, NetBSD, ядро Apple Mac OX X.

Ошибка была найдена в ходе тестирования созданной им версии malloc — функции общего назначения, предназначенной для выделения динамической памяти. Николай Штурм (Nikolay Sturm), тестирующий новую версию malloс, уведомил разработчика, что на аппаратной платформе SPARC64 при попытке компиляции больших проектов на C++ выполнение компилятора иногда завершается с сообщением о внутренней ошибки компилятора.

Выяснилось, ошибка содержится в разработанном сотрудником AT&T Стивеном К. Джонсоном (Stephen C. Johnson) генераторе грамматического разбора (parser generator) yacc, включенном в Unix с 1970-х годов. Появление ошибки может быть инициировано тем, что внесенные в malloc изменения улучшают средства обнаружения ошибок переполнения буфера. Ошибка возникает только на системах SPARC64.

В мае этого года швейцарский разработчик Марк Бальмер (Marc Balmer), участник команды разработчиков OpenBSD, обнаружил ошибку 25-летнего срока давности. Ошибке подвержены все BSD-системы, включая Mac OS X.

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