Как оказалось, самый цитируемый кусок Java-кода на StackOverflow содержал ошибку, которую никто не замечал на протяжении девяти лет. Теперь баг обнаружил сам автор сниппета, Андреас Лундблад (Andreas Lundblad), Java-разработчик в Palantir и один из наиболее влиятельных членов сообщества StackOverflow.
Еще в научной статье 2018 года сниппет Лундблада был признан самым копируемым Java-кодом со StackOverflow, который использовался во множестве опенсорсных проектов. Так, аналитики подсчитали, что код был скопирован и внедрен более чем в 6000 Java-проектов на GitHub. Исходно этот сниппет был опубликован в качестве ответа на вопрос в сентябре 2010 года. Идея состояла в преобразовании 123 456 789 байт в удобочитаемый формат, например, 123,5 Мб.
На прошлой неделе Лундблад рассказал в блоге, что он обнаружил в коде ошибку: оказалось, после выхода упомянутой научной статьи он заметил, что неправильно преобразовал тогда число байт, и теперь подготовил исправленную, корректную версию сниппета.
К счастью, баг оказался достаточно тривиальным и в итоге мог привести лишь к возникновению небольших неточностей в оценках размера файла. Все могло бы закончиться гораздо хуже, если бы ошибка провоцировала появление проблем с безопасностью. В таком случае на исправление всех уязвимых из-за этого бага проектов могли бы уйти годы, так как многие разработчики вовсе не задумываются о возможных последствиях, когда копируют чужой код со StackOverflow. Кроме того, многие намерено копируют код без указания авторства и фактически скрывают ото всех, что внедрили в проект непроверенный код.
К примеру, осенью текущего года ИБ-исследователи подсчитали, что на GitHub можно найти 2859 проектов, в которых использовались заимствованные и опасно уязвимые фрагменты C++ кода со StackOverflow. Эксперты выделили и искали всего 69 таких проблемных кусков кода за последние 10 лет, и на деле таких ошибок может быть намного больше.