LINUX.ORG.RU

В ядре FreeBSD выявлено как минимум 40 ошибок с помощью анализатора кода PVS-Studio

 , , ,


3

8

Святослав Размыслов из команды PVS-Studio опубликовал статью о проверке ядра FreeBSD. Разработчики PVS-Studio славятся тем, что в целях рекламы своего продукта регулярно проверяют различные открытые проекты. Пожалуй, это один из самых приемлемых и полезных способов продвижения проприетарного приложения. На данный момент они проверили более 200 проектов и выявили в них 9355 ошибок. По крайней мере именно столько ошибок содержится в базе описания дефектов на сайте компании.

Теперь очередь дошла и до ядра FreeBSD. Исходный код для проверки был взят с GitHub из ветки 'master'. По заявлению Святослава, анализатор PVS-Studio выявил около 1000 подозрительных фрагментов в коде, которые с большой вероятностью являются ошибками или неаккуратным кодом. 40 наиболее интересных фрагментов кода он описал в статье. Список предупреждений был заранее передан команде FreeBSD, и она уже начала вносить правки.

Пара слов для программистов, ещё не знакомых с PVS-Studio. Это инструмент для выявления ошибок в исходном коде программ, написанных на языках С, C++ и C#. PVS-Studio выполняет статический анализ кода и генерирует отчёт, помогающий программисту находить и устранять ошибки. На сайте компании можно увидеть более подробное описание и скачать демонстрационную версию.

>>> Подробности



Проверено: maxcom ()
Последнее исправление: maxcom (всего исправлений: 2)

это даже не ошибки это просто неряшливый код правится за 10 секунд

anonymous
()

Требую OpenBSD! Там же кода совсем чуть чуть, несравнимо меньше, чем во фряхе.

anonymous
()
Ответ на: комментарий от Gibson1980

Типа опять решето?

Какое решето? FreeBSD не подвержено уязвимости CVE-2015-7547...

Odalist ★★★★★
()
Ответ на: комментарий от alman

ну так покажи как надо, будь мужиком. Ой, в открытый доступ нечего выложить? Открой список моих тем, посмотри последнюю. Там 1 в 1 такие критиканты как ты. Только у пары процентов из них есть что сказать по существу и есть код в открытом доступе, и только из них я извлёк очень полезные для себя уроки.

И ты, как я понимаю, к этой паре процентов не относишься.

Так что можешь свое ЧСВ (тут должен быть твой копоративный статус если такой имеется) засунуть себе прямо в задний проход. Или давай код, посмотрим что ты умеешь.

reprimand ★★★★★
()
Ответ на: комментарий от Andrey_Karpov_2009

Продажа индивидуальных лицензий по фиксированному прайсу показала свою нежизнеспособность.

То есть цена индивидуальна и зависит от того, насколько охренел манагер, который её выставляет. Ок.

Valkeru ★★★★
()
Ответ на: комментарий от reprimand

если тебя нет на гитхабе то где твой код, Карл? а может ты не программист, а диванный аналитик? или просто латентный корпоративный раб?

Я посмотрел на твой «код» в твоих репах там. Мне смешно от твоих заявлений тут.

anonymous
()
Ответ на: комментарий от reprimand

Так что можешь свое ЧСВ (тут должен быть твой копоративный статус если такой имеется) засунуть себе прямо в задний проход. Или давай код, посмотрим что ты умеешь.

Мне, к примеру, за мой «корпоративный» статус платят много денег и мне не нужно самоутверждаться выкладывая поделия уровня школьника в паблик. Может поэтому у меня нету шила в заднице, в отличие от тебя?

anonymous
()
Ответ на: комментарий от anonymous

много денег

тут про деньги вообще речь не идет

reprimand ★★★★★
()
Ответ на: комментарий от anonymous

О, великий повелитель интерпрайза. Верим тебе и уповаем на тебя.

Да, это именно то, что ты должен делать.

anonymous
()
Ответ на: комментарий от Andrey_Karpov_2009

Рассказы про хобби я не воспринимаю всерьез

Ах, умер в вас мальчик-мечтатель - великие дела, след в истории и т.д. :) Опен-сорс - дело тонкое, стратегическое, тут нельзя руководствоваться сиюминутной выгодой. Подсаживание студентов на свою иглу - распространённая практика (Mircosoft и пр.), и в FOSS её презирают. Вы сделайте, и поддерживайте, пусть и в убыток. И сил на рекламу-продвижение тратить не надо, просто «поделитесь» своей внутренней линуксовой версией. Через 5 лет появится уважение среди не-уважаемых вами любителей, а через 10 лет станете стандартом де-факто в обществе программистов. Имя иногда стоит побольше иных продуктов.

(хотя, в российских условиях, где можно всё отнять, и суда нет - вас можно понять)

Я не программист, мне не надо, это моё «кукареку» мнение.

abvgdee
()
Ответ на: комментарий от reprimand

Полил тебе на голову из дежурного горшка.

anonymous
()
Ответ на: комментарий от reprimand

древне-еврейский божок-рыба

anonymous
()

40 ошибок для тестовой ветки великое достижение. И все остальные тесты такие же, берем самую последнюю не стабильную ветку исходников находим 10+ ошибок, пишем статью на хабре.

JoyceGraham
()
Ответ на: комментарий от abvgdee

Подсаживание студентов на свою иглу - распространённая практика (Mircosoft и пр.), и в FOSS её презирают.

С этим согласен.

Через 5 лет появится уважение среди не-уважаемых вами любителей, а через 10 лет станете стандартом де-факто в обществе программистов.

А вот с этим нет, проприетарщина может и может стать стандартом дефакто при отсутствии нормальных альтернатив (например, проприетарные драйвера nvidia), но вот получить уважение проприетарщина никогда не сможет.

anonymous
()
Ответ на: комментарий от anonymous

Извините, вы представьтесь сначала (залогиньтесь), а потом пишите что с чем-то (не) согласны. Как-то глупо получается, вам не кажется? :)

abvgdee
()
Ответ на: комментарий от IPR

Как реклама этого говна оказалось на главной?

А, по-моему, всем нравится дискуссия. Так что не зря оказалась. :)

Кстати, многие открытые проекты нам благодарны. И используют бесплатную версию. Другое дело, что не все понимают, что нужно не ругаться/плеваться/требовать, а общаться.

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от Valkeru

То есть цена индивидуальна и зависит от того, насколько охренел манагер, который её выставляет. Ок.

Нет, причина заключается далеко не только в этом. Поверьте, мы не такие уж охреневшие. :) Но это не для дискуссии на сайте.

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от anonymous

это даже не ошибки это просто неряшливый код правится за 10 секунд

Дело не в том, что его править 10 секунд. Дело в том, как такой код быстро выявлять и исправлять. Это в выжимке примеров, всё просто и понятно. Хотя даже с малыми кусками кода не всё так просто (попробуйте пройти тест на внимательность). В настоящем коде всё сложнее.

Если бы не было проблем, найти и исправить, откуда взялись тысячи этих ошибок? Причем мы никогда не ставили цель найти их. Это просто побочный продукт проверки проектов для написания рекламных статей.

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от Andrey_Karpov_2009

И используют бесплатную версию.

ой, не знал что есть.. извините тогда. :)

А, по-моему, всем нравится дискуссия. Так что не зря оказалась. :)

забавно что вы прокомментировали как и где, а не что :)

abvgdee
()
Ответ на: комментарий от crypt

как вы прокомментируете, что проверяли вашим анализатором glibc и не нашли недавнюю громкую уязвимость?

Мы никогда не позиционировали себя, как инструмент для поиска уязвимостей. Мы ищем ошибки. Да, часто ошибка и уязвимость, это одно и тоже. Но всё таки некоторая разница есть. Да и что тут стыдиться то? Как будто мы одни её не нашли. :)

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от SZT

А в чем затруднения интерпретации? Делаете консольную программу, которую вызывают потом вместо компилятора..... Дальше пусть уже кто хочет делает интеграцию всего этого к своей IDE чтоб она на основе выданных записей подсвечивала конкретные строки кода. Что именно мешает так сделать?

Наша философия. Опять возникает путаница между консольной программой и полноценным удобным инструментом. Хотя даже с консольной версией есть нюанс. Ей как минимум надо передать информацию, что за компилятор используется. Это в стандарте C/C++ однороден. На практике это диалекты и надо знать какой именно. А ещё есть важные дополнительные настройки. И на практике не так просто бывает всё это подменить и передать в системе сборки. Вот уже есть неудобства. Выплюнуть текстовый файл - какой-то каменный век. Надо что-то куда-то прикручивать самому. И не понятно, как сделать интерактивный доступ к help (описанию диагностик). Про гибкую динамическую настройку фильтров я вообще молчу. Не удел остается система разметки неинтересный сообщений в базе. А как-же IncrediBuild... Всё остаётся мимо...

Итого, в результате получится полудикая неудобная утилита. Нет, не хотим. Наше мнение, лучше вообще не делать, чем делать плохо.

Мы готовы сделать человеку хорошо для его конкретной среды, компилятора. Универсальное же решение будет ровным счетом никуда не годиться.

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от Odalist

Тулкит может и полезный, но такие проверки мне похожи на пиар..

Это и есть пиар :) Зато честный и полезный.

Andrey_Karpov_2009
() автор топика
Ответ на: комментарий от Andrey_Karpov_2009

Другое дело, что не все понимают, что нужно не ругаться/плеваться/требовать, а общаться.

So Рашка

anonymous
()
Ответ на: комментарий от anonymous

Ну как бы этот чудо продукт нашел не уязвимости, а говнокод.

r_asian ★☆☆
()
Ответ на: комментарий от IPR

Как реклама этого говна оказалось на главной?

Нужно больше Хабра! :)

atrus ★★★★★
()
Ответ на: комментарий от anonymous

don't worry мы здесь ждем новой недели и новых багов в линуксе

anonymous
()
Ответ на: комментарий от reprimand

это плод больного воображение одного писателя

anonymous
()
Ответ на: комментарий от anonymous

Цель рекламы — сообщить о существовании продуктов, услуг и тому подобного.

Маркетологи умеют красиво изъясняться, поэтому хорошо зарабатывают. Но зачем кому-то сообщать о существовании продуктов и услуг? Может всё-таки преследуется какая-то цель, кроме развития кругозора у населения?
Вот мой будильник по-утрам сообщает мне, что пора вставать. Ему я верю, что он это делает бескорыстно. А рекламу чёта подозреваю.

ashot ★★★★
()
Ответ на: комментарий от IPR

Как реклама этого говна оказалось на главной?

По-блату, ясен пень. Посмотри кто проверил.

ashot ★★★★
()
Ответ на: комментарий от Andrey_Karpov_2009

Ей как минимум надо передать информацию, что за компилятор используется. Это в стандарте C/C++ однороден. На практике это диалекты и надо знать какой именно

GCC/Clang для языка Си понимает -std=c89, c90 c99, c11, gnu90 gnu99 gnu11 и еще кучу для всяких плюсовых версий стандарта... это все передается при сборке через флаги. Не вижу никакой проблемы с передачей информации о том, какой именно компилятор используется и с каким стандартом компилируется код

А ещё есть важные дополнительные настройки.

А их никак нельзя задать через флаги?

И на практике не так просто бывает всё это подменить и передать в системе сборки. Вот уже есть неудобства.

Ну вот давайте конкретные сложности на практике опишите, что там неудобно может быть? Вместо вызова настоящего компилятора вызываем некий псевдокомпилятор, который выдает вместо объектных файлов псевдообъектные pvs-studio файлы, и на этапе какбы-линковки потом эти псевдообъектные файлы полностью анализируются в общем и целом. Где на практике возникнут проблемы?

Выплюнуть текстовый файл - какой-то каменный век. Надо что-то куда-то прикручивать самому.

Я считаю что когда софт намертво прикручен к ОДНОЙ КОНКРЕТНОЙ IDE работающей полноценно только в ОС семействах Windows - какой-то каменный век. Посмотрите например на список поддеживаемых к GDB фронт-энтов https://sourceware.org/gdb/wiki/GDB Front Ends

Как так получилось? У GDB есть некий открытый и документированный интерфейс https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI.html для взаимодействия отладчика со средой разработки. У вас же ничего подобного нет. Написали все эти фронт-энды к GDB отнюдь не сами разработчики GDB. Разработчики просто предоставили некий способ прикрутить этот GDB к чему вздумается, и этим воспользовались другие.

И не понятно, как сделать интерактивный доступ к help (описанию диагностик).

Это (вопрос интеграции с конкретной средой разработки, когда кто-то мышкой кликает на «диагностика №1234» - ему выскакивает описание, что эта диагностика означает) должно решаться теми, кто решит прикручивать все это к какой-то среде разработки(будь то Qt creator, eclipse или что там еще...). Просто нужна некая БД со списком ошибок, и возможность из этой БД по номеру ошибки получить текст описания ошибки, дальше уже как-нибудь сами без вас разберутся.

Про гибкую динамическую настройку фильтров я вообще молчу.

А что там за такая динамическая настройка фильтров, которую нельзя реализовать какими-нибудь регулярками? Можно всю базу с предупреждениями засунуть в какую-нибудь СУБД и потом оттуда что-то фильтровать, просматривать предупреждения только какого-то уровня и прочее, прочее, но это не надо заталкивать в саму систему для провеки исходного кода. UNIX-way. Достаточно выплюнуть в текстовом виде все предупреждения, и потом пусть уже пользователь сам делает какие-то выборки из них любым удобным ему способом, заталкивает это все в БД, или через grep какой-нибудь. Как угодно.

Итого, в результате получится полудикая неудобная утилита.

Вы похоже просто живете в каком-то параллельном мире, где удобно это когда утилита прибита гвоздями к какой-то одной конкретной неудобной(для многих пользователей GNU/Linux) кривой IDE и работает только в виндах.

А как-же IncrediBuild... Всё остаётся мимо...

distcc в помошь

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от anonymous

когда кУпите и проверите

Зачем козе баян, тем более за over 5k€ целковых? Но раз тут занимаются рекламой, было бы интересно глянуть и на такой результат.

beastie ★★★★★
()
Ответ на: комментарий от Andrey_Karpov_2009

Итого, в результате получится полудикая неудобная утилита. Нет, не хотим. Наше мнение, лучше вообще не делать, чем делать плохо.

Хочу этот пассаж отдельно прокомментировать вот этой ссылкой http://russian.joelonsoftware.com/Articles/Biculturalism.html и цитатой оттуда

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

Ну и так далее. Мне вот как раз ваш подход с прибиванием анализатора намертво к вижуалстудии кажется диким

SZT ★★★★★
()
Ответ на: комментарий от Andrey_Karpov_2009

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

anonymous
()
Ответ на: комментарий от reprimand

Ну вот я смотрю твой, и что? Пустая репа, какой-то мусор, хеллоуворлд, однострочники - что ты умничаешь-то?

cdshines ★★★★★
()
Ответ на: комментарий от alman

Слушайте, такие вот как reprimand - это они серьезно себя программистами считают после калькуляторов на си? Или просто троллят ловко? Вспоминается еще, кажется, qulinxao, создавший тред, где он школьными задачками работодателям угрожал.

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

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

anonymous
()
Ответ на: комментарий от reprimand

чтооо?! C/C++ в качестве хобби? окстись их на работе то не каждый стерпит. ты видать из резервации или отстающий. в 2016 писать пет проекты на сишке да крестах ну насмешил)))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.