Вот так сюрприз: в самом копируемом фрагменте Java-кода нашли ошибку

16.12.2019
17710

Сайт StackOverflow – популярная система вопросов и ответов о программировании. На этом ресурсе можно найти (или хотя бы попробовать!) решение практически любой проблемы. Но не все советы коллег одинаково полезны: в самом цитируемом куске кода на Java, представленном на StackOverflow, обнаружили серьезный баг.

Кто создал самый цитируемый фрагмент Java-кода

В сентябре 2010 года Андреас Лундблад опубликовал Java-сниппет в ответ на вопрос другого пользователя на StackOverflow. Сниппет преобразовывал большие количества байт в формат, удобный для чтения людьми: к примеру, 123 456 789 байт в 123,5 МБ.

 

 

Сегодня Лундблад – один из самых известных Java-разработчиков в мире и авторитетный представитель сообщества StackOverflow. Лундблад работает в компании Palantir, основанной выходцами из PayPal. Компания разрабатывает софт для хедж-фондов, инвестиционных банков и спецслужб по всему миру.

В чем проблема

Сниппет Лундблада назвали самым цитируемым в научной статье, опубликованной в 2018 году. Эксперты подсчитали, что его используют в 6 тыс. Java-проектов, размещенных на GitHub. Это далеко не все проекты – есть и другие хостинги, к тому же не все разработчики выкладывают свой код в открытый доступ.

Баг в коде нашел сам Лундблад. Он рассказал, что заметил проблему, когда вчитался в текст упомянутой научной статьи. Разработчик обнаружил, что с самого начала неправильно преобразовывал число байт. Из-за этого проекты, которые используют его сниппет, могли работать неправильно.

Лундблад подчеркнул: баг был тривиальным, и действительно странно, что девять лет на него никто не обращал внимания. Но последствия ошибки невелики – пользователи могли заметить небольшие неточности при определении размеров файлов, но, скорее всего списывали их на погрешности округления.

Гораздо хуже было, если бы в коде нашли проблему с безопасностью, добавил Лундблад. Вполне возможно, что в такой ситуации разработчикам понадобились бы годы, чтобы исправить свои проекты и закрыть уязвимости.

Что делать

Лундблад уже подготовил исправленную версию сниппета и отредактировал свой ответ. В новом коде количество байт определяется корректно. Если вы тоже использовали этот сниппет – замените код в проекте на новую версию. Это избавит от возможных неточностей.

Лундблад напомнил: часто код со StackOverflow и других сайтов копируют без указания авторства. Когда в таких фрагментах находят баги, то разработчики, внедрившие код таким образом, могут и не узнать об этом. А значит, их проекты продолжат существовать с ошибками.

А как у других

Осенью 2019 года специалисты по информационной безопасности проанализировали, как часто разработчики используют опасно уязвимые фрагменты кода на С++ со StackOverflow. Они выполнили поиск по 69 таким кускам кода и нашли 2859 проектов, которые их использовали в течение последних 10 лет. Естественно, на самом деле и уязвимых фрагментов, и проектов, в которых они используются, гораздо больше.
Автор:
Обозреватель

См. также

Журнал Института инженеров электротехники и электроники IEEE Spectrum подготовил рейтинг самых популярных языков программирования в 2023 году. Статистика разделена на три категории.

01.09.2023    1920    VKuser24342747    4       

2

С помощью библиотек и средств визуализации Python можно будет манипулировать данными Excel, а затем использовать полученные результаты в формулах, диаграммах и сводных таблицах.

28.08.2023    1157    VKuser24342747    0       

2

Спустя пять лет разработки вышел релиз компилятора для языков программирования Python и Cython – проект Cython 3.0. Он позволяет транслировать код Python в представление на C/C++.

28.07.2023    1743    VKuser24342747    0       

2

GitLab представила собственную нейросеть Code Suggestions, способную генерировать код по запросу на естественном языке. ИИ-помощник поддерживает работу с 13 языками программирования.

10.07.2023    1751    VKuser24342747    0       

1

Stack Overflow представил рейтинг языков программирования за 2023 год. В исследовании учитывали не только частоту применения языка, но и интерес разработчиков к нему. Также компания составила рейтинг платформ и ИИ-инструментов. 

20.06.2023    2122    VKuser24342747    1       

2

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

14.12.2022    7528    VKuser24342747    0       

3

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

01.12.2022    8929    VKuser24342747    11       

3

Ричард Мэттью Столлман, основатель Фонда свободного программного обеспечения, представил руководство по языку C и расширениям GNU. Пособие доступно всем желающим и предназначено как для опытных, так и начинающих программистов.

19.09.2022    12262    VKuser24342747    0       

4

Комментарии

Инфостарт бот
1. protexprotex 16.12.19 17:18 Сейчас в теме
Они еще в 1С не лазили :-)
sogesti; FesenkoA; DrAku1a; Aggressorak; frkbvfnjh; Boyborodin; hydro2588_2015; rusmil; for_sale; ProgrammistC; +10 Ответить
2. Поручик 17.12.19 11:07 Сейчас в теме
Если у кого-то возникла проблема с безопасностью или взломали, то поделом. Нехера бездумно копипастить всякое дерьмо с сети.
3. DrAku1a 19.12.19 17:55 Сейчас в теме
(2) Конкретно в данном коде нет опасных участков, ошибка чисто техническая.

Оставьте свое сообщение