Камиля Шевчик, молодая разработчица из Германии, исправила давний 20-летний баг в оконном менеджере Enlightenment E16. Этот случай подчеркивает, что старое программное обеспечение может по-прежнему требовать внимания и исправлений.
Контекст довольно интересен
Enlightenment E16, который был представлен в 1999 году, всё еще поддерживается небольшой, но преданной командой разработчиков. Шевчик, обучающаяся в магистратуре Университета Земли в Саарланде, считает, что такие «завершенные» программы могут быть лучше современных аналогов, которые зачастую наполнены ненужными функциями.
В своём блоге она поделилась деталями проблемы, которую обнаружила при подготовке учебных материалов. При попытке открыть файл, имя которого оказалось слишком длинным, E16 зависал. Причиной пагубного поведения программы стала ошибка в алгоритме обрезки заголовков окон. Как оказалось, в 20-летнем коде не было ограничения на количество итераций, что в конечном итоге приводило к зависанию рабочей среды.
Что именно исправила Шевчик
В обновлении, опубликованном для версии E16 1.0.30, Шевчик изменила алгоритм, добавив три ключевых поправки: ограничение итераций до 32, предотвращение появления отрицательных корректировок и защиту от ошибок деления на ноль. Эти решения не только устраняют текущую проблему, но и предотвращают появление аналогичных в будущем.
Шевчик считает, что многие современные программы на самом деле полны неочевидных багов и уязвимостей, скрытых в миллионах строк кода. Она призывает разработчиков не гнаться за постоянными обновлениями и инновациями, а сосредотачиваться на стабильных версиях программного обеспечения.
К чему это может привести
Исследование показало, что необходимость в исправлениях старого ПО может быть важной для многих разработчиков. Специалисты могут задуматься о том, как поддерживать и развивать ресурсы, созданные в прошлом. Рекомендуется оставаться на долгоиграющих и стабильных версиях ПО, чтобы избежать появления новых уязвимостей и сбоев.
Следующий шаг — анализ вероятных обновлений для других популярных оконных менеджеров и программ, чтобы улучшить их безопасность и стабильность.