Разработчики проекта Grsecurity поделились поучительной историей, демонстрирующей как необдуманное устранение предупреждений компилятора может привести к появлению уязвимостей в коде. В конце мая для ядра Linux было предложено исправление нового вектора эксплуатации уязвимости Spectre через системный вызов ptrace...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=51419
Никогда такого не было и вот опять
"Акелла промахнулся! Акелла промахнулся!"(С)А также "миллионы глаз" ...
> А также "миллионы глаз" ...Ну они и нашли. За полтора месяца всего лишь. Что не так?
Нашла фирма, которую эксперты опеннетика полмвают соплями, а не те самые "миллионы глаз". Статью-то читал, или рефлекторно за Акеллу обиделся? Запеканус вижу я анонимный падаван
то что ты называешь "миллионы глаз" называется экосистема, и эта фирма часть этой системы.
А фирма это миллион первый глаз или что ты хочешь сказать?
Это же богопротивный проприетарный глаз. Или у экспертов опеннетика как всегда, тут играем, а тут рыбу заварачивали?
Как бы проприетарный глаз смотрел закрытый исходник?
И тут аноним произвел техничный соскок с темы.
Благодарные зрители аплодируют стоя! 👍
Где здесь соскок с темы? Давай вернёмся назад и разберём по порядку.Миллионы глаз спасают OSS от уязвимостей. Так ведь примерно оно звучит в оригинале? Здесь ни слова не сказано о том, что миллионы глаз должны работать на энтузиазме, не должны получать зарплату за просмотр кода, и тем более не должны работать в конторе ориентированной на безопасность, или что глаза, нашедшие уязвимость, не должны быть поливаемы помоями на опеннете. Ни о чём этом не сказано. Сказано лишь, что миллионы глаз должны смотреть на опенсорсную программу, и тогда дыр будет гораздо меньше.
Так и где здесь соскок с темы?
В оригинале тысячи глаз. Не было бы этих глаз, не было бы новости.
Вот именно Акелла-то как раз и не промахнулся, промахнулся его первый зам.
Что в свою очередь может быть трактовано как "Акелла промахнулся выбирав себе такого первого зама", но только если считать что качество кода это главное и единственное качество, требуемого от первого зама Акеллы. Что неверно.
Давайте напихаем в ядро непонятных костылей для защиты от багов процессора.
Отличная идея, что может пойти не так?
Вот это действительно здравый и свежий подход.
Рукопожимаю!
наглядный (очередной) пример к чему приводит безмозглое борцунство с -Wallкак будто де6иллиановской истории с дырявым ssh было недостаточно.
это должен был сделать автор с самого начала, а не объявлять заранее ненужную переменную. Умники, которым "Wall" не нужен - не нужны
> Умники, которым "Wall" не нужен - не нужныАноним выше как раз это и написал, только другими словами. Wall не для того придумывался, чтобы программист механически переставил пару строк местами или добавил куда попало скобок, лишь бы ворнинг пропал. Если это то, что вы делаете при появлении ворнингов, то лучше собирайте без Wall - пусть его используют те, кто будут разбираться в проблеме и исправлять её.
ОК. Пусть аноним сам отвечает за свои слова: вынет банан изо рта и перестанет мямлить.
По-русски ничего не понятно.
Учи олб^W Си.
Что значит ^W ?
Нажми на клаве, узнаешь )
Закрылась текущая вкладка.
Там предварительное шаманство нужно сделать перед нажатием.
То ли линукс установить, то ли консоль запустить, то ли емакс (что бы это слово ни значило).
А нет, ещё не все.
Нужно ещё напечатать какие-нибудь (любые) слова.
Тот кто придумал использовать для обозначения ctrl символ ^. Нелогичный человек.
ты, видимо, только недавно стал компьютерами пользоваться.
Кстати, почему все пишут ^W а не ^w? Или вы еще и Shift зажимаете чтобы удалить последнее слово? Я просто Ctrl + w жму без Шифта.
> Кстати, почему все пишут ^W а не ^w?нажми в своем любимом cmd.exe, узнаешь
Нажимал, работает одинаково.
> Нажимал, работает одинаково.на экране-то - что?
Просто убирается последнее слово. Но я понял, в принципе. При нажатии Ctrl + c пишет ^C. По тому же принципу и ^W получается.
Ну, тут уж... Лишь бы не курил...
> Кстати, почему все пишут ^W а не ^w? Или вы еще и
> Shift зажимаете чтобы удалить последнее слово? Я просто Ctrl + w жму без Шифта.cat < /dev/full
или
read
что пишет при нажатии Ctrl+(c/z/d/o/k/l/backspace)? Вот то-то и оно.
Блин, ну кто же объявление переменных в тело то запихивает?
А че нет то? если временная переменная, которую неплохо бы потом сразу выпилить
Все. Кроме C90. А ядро это не C90, а GNU C, где такое возможно (как и в C99-C11).
это абсолютно нормально в случаях, когда вне if эта переменная нафиг не нужна.
> Блин, ну кто же объявление переменных в тело то запихивает?Ловите паскальщика!
>> Блин, ну кто же объявление переменных в тело то запихивает?
> Ловите паскальщика!Не, ну чо вы сразу то. Ну классно же, когда все переменные в одном месте. И таких ситуаций не возникает, что есть переменная, а ты ищешь ее по всему когда...
М.б. есть ещё нюансы работы со стеком/указателями при разных случаях, что влияет на производительность, в зависимости от того из какого участка забрать данные
На производительность влияет только в том случае, если ты пишешь под vm н.р. java, c#. Вот там обьявление в теле цикла приведет к созданию объекта и его уничтожению на каждую итерацию.
c lang этим не болеет, тк исполняется на машине
> c lang этим не болеет, тк исполняется на машинеПри этом ассоциативность линеек кеша не учитывает.
Это ты должен учитывать. В языке просто нет никаких механизмов для этого.
Если это возможно, значение станет частью машинной команды, если нет, то это адрес в памяти где он лежит.
не переживай, рано или поздно ты научишься распознавать братье по разуму
как интересно скакнуло сообщение, оно было не тебе.
Объявление переменной в java или c# не приводит к созданию объекта. Объект создаётся при помощи ключевого слова new
Товарищ толковал не про new, а про экономию в теле цикла, не надо прикапываться к словам. К тому же есть в народе мнение, что дотнетовский канпилятор достаточно сообразителен чтобы эту переменную оптимизировать, и не создавать ее заново на каждой итерации. А за жабу тебе лютый жабист с Изей растолдычат.
Какое отношение место для написания имеет к тому в каком участке оно окажется.
Это уже дело компилятора размешать переменные.
А любовь к определению переменных с одним именем создавая область видимости скобками до добра не доводит. Но большинству лениво скроллировать экран для создания новой переменной - проще запихнуть ее прям здесь.
> Ну классно же, когда все переменные в одном месте.Не, не классно. Переменная может быть используется в одном из вложенных циклов, но объявлена она вначале, и когда ты натыкаешься на неё глазами, начинаешь искать определение. Но дело не только в этом. Когда переменная синтаксически локализована до минимальной области видимости из возможных, то тебе сложнее совершить ошибку. Вынос строки копипастом из области видимости приведёт к ошибке компиляции. И очень часто это очень полезная ошибка: если бы переменная была объявлена на всю область видимости функции, то такой бездумный копипаст привёл бы к рантайм ошибке.
>Блин, ну кто же объявление переменных в тело то запихивает?Запихивают даже в начало цикла for
for(auto i{0}, a{0}, b{20}; i<100; i++) {...}
Ступай своей дорогой, плюсовик. Объявление в начало цикла можно запихать в C99 и выше, но до такого упоротого синтаксиса инициализации в сишечке ещё не додумались.
Вот почему, когда Grsecurity находят ОДНУ уязвимость, то их все хвалят в комментариях, а когда PVS Studio находят 70, то в комментариях их обзывают всякими нехорошими словами?
Всё из-за назойливого пиара.
Пиар у PVS, я бы сказал, агрессивный, но - конструктивный, всегда приводится масса примеров, когда использование PVS приводит к вину, а неиспользование (неважно, конкретно PVS или любого другого хорошего статического анализатора) - к фейлу. Даже если не приобретать PVS и игнорировать собственно коммерческий мессидж, их пиар - призыв к хорошему и полезному, каковой игнорировать не стоит.
Ну, кстати, PVS несколько исправились и теперь у них пиар не такой агрессивный, как было в самом начале
У меня вызывает раздражение только их отказ сообщать цены, они же как на России принято рассчитывают на откаты, потому цен нигде нет и всегда призыв «пишите, побазарим, как пацаны перетрем чо-почом»А так они делают благое дело, проверяют проекты и пишут не только статьи на профильных ресурсах, но и всякие issue в трекеры проектов, таким образом проектам помогают, за что им спасибо, без вопросов
ну это же не массовый продукт, а жить на что-то они должны, логично выставлять цену в зависимости от серьезности заказчика. Программисту Васе можно продать за 5 баксов, от них не убудет, но если всем за 5 баксов продавать, то разоришься.
Нет, дело именно в том, что они ведут бизнес по-российски, скрывают цену, что бы договорится с тем, кто будет отвечать за закупку.
> Нет, дело именно в том, что они ведут бизнес по-российски, скрывают цену,
> что бы договорится с тем, кто будет отвечать за закупку.Домыслы. Цитата с офсайта:
"Ах да, некоторые думают, что мы выставляем цены в зависимости от того какая компания к нам, обращается. Конечно же это не так, у нас фиксированные цены для всех. Вы же не думаете, что Apple или Google покупают обычные ручки своим сотрудникам по $1000 за штуку только потому, что могут себе это позволить?"
https://www.viva64.com/ru/why-business-email/
Проверить, правда ли это - весьма несложно.
> Проверить, правда ли это - весьма несложно.Проверить правда ли это нереально. Ты не знаешь какую цену они кому выкатывают. Ты можешь получить одну, а другой другую и ты не узнаешь об этом
>нереальноКонечно. Детский сад. Проще сказать "нереально", чем проверить и признать что домыслы - таки просто домыслы. А ведь достаточно просто договориться с знакомым и подать разные заявки. И сравнить ответы.
Но опеннетовский конспиролог такой конспиролог, пруфы - это не для него, да.
Я подавал заявку и получил отказ. Тебе еще что-то нужно?
>Я подавал заявку и получил отказ. Тебе еще что-то нужно?Мне-то ничего не нужно, PVS явно была нужна тебе :-) И то, что тебе отказали в продаже - очень многое объясняет по поводу причин, побуждающих тебя публиковать свои домыслы, хм...
> Нет, дело именно в том, что они ведут бизнес по-российскиПрогрессивный Вы наш эуропеець али хто там, узнайте про некрософтовские/хьюлеттовские/цискины "глобальные" прайсы и не менее позвоночные скидки, порой в разы. А потом уже спешите опозориться невежеством на людях, если, конечно, очень неймётся.
Не просто в разы, скидка 70% на оборудование встречается часто (хотя и не всегда).
А максимально видел у Оракла там было почти 80% (79 с хвостиком) на их СУБД.
Это считай в 5 раз.
А цены да выставлены вполне публично и кому это мешает?
Скидка - дело персональное и является коммерческой тайной.
> Не просто в разы, скидка 70% на оборудование встречается часто (хотя иона бывает и заметно больше.
Но для этого надо позвать в конкурс хуавей, который в такие скидки не верит, поэтому каждый раз проигрывает ;-)А gpl лежит себе, почти общедоступный (при том что циска напрямую обычно не торгует) и ориентироваться на него вполне можно. Для того и лежит.
> Нет, дело именно в том, что они ведут бизнес по-российски, скрывают цену,
> что бы договорится с тем, кто будет отвечать за закупку.B2B. Это нормально - запросить цену. Для индивидуального использования есть различные варианты бесплатного использования: https://www.viva64.com/ru/b/0614/
>рассчитывают на откатыНе-а. Они не связаны с государством от слова никак. Так что про "откаты" тут некорректно.
И озвучивание цен только по запросу я встречал и у уважаемых иностранных компаний, разрабатывающих и продающих весьма годный нишевый софт. Это позволяет отсеять некоторую часть потенциальных клиентов.
>Они не связаны с государством от слова никак. Так что про "откаты" тут некорректно.Откаты бывают не только в госзакупках, так что это мимо.
Откаты практикуются в российском бизнесе, когда официально заявляется одна цена, а на практике с этой цены сотруднику фирмы-покупателя отстегивают процент. Я прекрасно помню, например, что в Москве так работал НИКС, продавая железо фирмам. В фирме где я работал человек закупавший все железо в НИКСе(старший попингуй) особо и не скрывал от других ITшников, что получает свой процент, а мы за это его иногда просили что-то взять не баблом, а железом которое нам самим домой нужно. И так в России построен весь бизнес.
> В фирме где я работал человек закупавший все железо в НИКСе(старший попингуй) особо и не скрывал от других ITшников, что получает свой процентИ как долго это удаётся скрывать от руководства компании (настоящего, а не какого-нибудь оверстаршего суперменеджера, который может быть в доле)?
В небольшой IT-компании, продающей софт выращенный своими руками такую схему замутить намного сложнее без быстрых и фатальных для карьеры последствий.
Ну я работал там в 2003-2005 годах, старший попингуй там работал до меня пару лет и еще лет пять после меня. Схема работала и не чихала. То есть лет 9-10 оно точно было.Железо покупалось у НИКСа по пятой колонке прайса(из трех официальных), железа покупалось много(фирма была крупная, занималась поставками оборудования для основных телеканалов страны), так что его шалости всем были пофигу, а он имел достаточно профита с этого.
> Схема работала и не чихала. То есть лет 9-10 оно точно было.
> (...) так что его шалости всем были пофигуИ тебе было явно пофигу в том числе - ведь проще поныть на форуме, чем, например, донести на вора, обкрадывающего компанию в отдел безопасности или даже сразу гендиру или владельцу. Ах, ну да, "стукачество это плохо", да?
Я пришел туда работать, после того, как мой личный бизнес отжали ребята в погонах. Хотел ли я, что бы все дальше было честно? Хотел ли я, что бы снова с криками «Путин разрешил!» вломились выролки из ФСБ? Нет, конечно. Мы пытались строить честный бизнес, у нас все отняли и окунули нас в пурьмо.
При таких раскладах разумно взять и того, на трактор. А факт отжатия использовать как аргумент при получении визы.
Когда я в конце 2000-х работал в небольшой компании производящей софт - гендиректор и все бухгалтеры были вполне в курсе откатов на закупке оборудования. Что они делали потом с этим знанием - не в курсе.
> Когда я в конце 2000-х работал в небольшой компании производящей софт -
> гендиректор и все бухгалтеры были вполне в курсе откатов на закупке
> оборудования. Что они делали потом с этим знанием - не в
> курсе.учитывали в плане расходов, что ж еще...
> У меня вызывает раздражение только их отказ сообщать цены, они же как
> на России принято рассчитывают на откаты, потому цен нигде нет и
> всегда призыв «пишите, побазарим, как пацаны перетрем чо-почом»Ох уж эти интриги, расследование.... Каждый запросивший цену может наблюдать в письме помимо собственно цен, ещё и дополнительную фразу в духе: для удобства вы можете скачать .pdf с ценами вот здесь. И ссылка на pdf файл, прибитый к сайту гвоздиком и один на всех. Цены у нас для всех одинаковые. Другое дело, что есть масса нюансов, связанных с длительностью, количеством, реселлерами, продлениями, расширениями лицензий на большее количество людей и так далее. Поэтому есть смысл не делать мега-сложные таблицы с ценами на все случаи жизни, а обсудить конкретный запрос. Однако, это конечно всё не так интересно, как искать и обсуждать заговор капиталистов :).
Каких еще капиталистов? У вас чисто российский бизнес, а на России социализм, построенный членами КПСС. Был бы на России свободный рынок, вы бы не могли вести подобную политику со скрытием цены на продукт.
При чём здесь вообще Россия? Подавляющее большинство наших клиентов из США и Европа. Клиенты PVS-Studio: https://www.viva64.com/ru/customers/
Учи психологию, сынок.
Глупейший совет. Психология - это псевдонаука с предсказательной способностью меньше чем у рублёвой монетки. Примерно как диетология.
Если ты думаешь, что трудно тебя предсказать, то думай, но скорее всего картина будет распространённая, а как следствие - банальная, это да.
Я знал, что тебе подорвёт.
> тебеЛично анониму?
Люди существа иррациональные, только псевдонаукой типа психологии их можно понять.
Это твои представления о психологии глупейшие.
> Глупейший совет.Легко проверить. Допустим, оценка является проекцией. В таком случае она относится к последующему тексту.
> Психология - это псевдонаука
> с предсказательной способностью меньше чем
> у рублёвой монетки.Субъективный опыт дал неожиданный результат? Либо недопонимание, либо действительно наука так себе. Воспользуемся более формальной для проверки: частный случай обобщён, но индуктивное умозаключение не доказано, при этом выдано за истину. Глупо получилось, следовательно исходное допущение -- верно.
Найдёте ошибку в логике?
Если ты что-то непонимаешь, это еще не значит, что оно не работает
У них маскот отвратительный, оскорбляющий эстетическое чувство.
На нём недостаточно чёрных женщин-трансексуалов?
>оскорбляющий эстетическое чувство......снобья.
Три сиськи? Зачётно!
В данном случае Grsecurity грамотно изложила, в чём проблема и каковы её причины. Но им следовало бы подождать выхода исправлений, а потом уже публиковать новость.
PVS же вываливает портянку мелких и не очень ошибок вперемешку с фолсами на всеобщее обозрение, не предлагая ни фиксов, ничего. Типа пусть разрабы сами берут лопату и ворошат эту кучу, а мы и так молодцы, покупайте наш расчудесный анал-и-затор. Никакого смысла кроме пиара в этом нет.
Ты наверно за своим агрессивным отношением к пвс как-то не дочитываешь до того момента, где они пишут, что все обнаруженные проблемы отправляют разработчикам проверяемого софта. Сам не дочитал, сам заагрился - молодец.
> Ты наверно за своим агрессивным отношением к пвс как-то не дочитываешь до
> того момента, где они пишут, что все обнаруженные проблемы отправляют разработчикам
> проверяемого софта. Сам не дочитал, сам заагрился - молодец.ну вот с фрей, к примеру, они ничего никому не отправили - гордо отрапортовали о миллионе найденых ошибок (в основном в мертвых драйверах, кмк) и предложили желающим, afair, клянчить (не скачать анонимно) у них лог - тот самый, с миллионом ложных срабатываний и сомнительных предупреждений.
Разумеется, у проекта, который и так на ладан дышит, желающих сутками копаться в этом логе - не нашлось.
> ну вот с фрей, к примеру, они ничего никому не отправилиТы об этом?
https://habr.com/ru/company/pvs-studio/blog/277439/
> Тем не менее, команда разработчиков FreeBSD получила весь список предупреждений анализатора, на которые стоит обратить внимание.
Или об этом?
https://m.opennet.ru/opennews/art.shtml?num=46332
> Для некоторых из выявленных проблем разработчиками PVS-Studio подготовлены исправления, которые были переданы через систему отслеживания ошибок bugs.freebsd.org.
> Ты об этом?
> https://habr.com/ru/company/pvs-studio/blog/277439/да. Ты там видишь ссылку на лог? И я нет.
> Тем не менее, команда разработчиков FreeBSD получила весь список предупреждений анализатора
со ссылкой на ненужно-гит копию репо, причем даже не уточнив этот момент - К - квалификация.
то есть прежде чем бросаться самопиариться - даже не удосужились выяснить, где у проекта нормальный репо, а где - его неиспользуемый разработчиками клон.
дальше прислали спам разработчикам - которые даже не с первой попытки смогли понять, про какую они версию им пишут. И не потому что непонятливы, потому что вот такую херню им прислали.
результат очевиден. Убедившись что там полно ложных срабатываний - получатели просто выбросили его в мусорку, и пожалели о потеряном времени. А pvs получили антипиар.
Это так по-крaсноглазому: вместо того чтобы сказать спасибо за бесплатный анализ, придраться что выложен не туда и принципиально в него не смотреть.
еще раз, разжевываю: бешплатный анализ достался людям, которым нафиг был не нужен. Они бегло глянули, убедились что либо древние драйвера либо ложные срабатывания, а времени им своего - жалко.
Тем кто мог бы в нем покопаться - не достался. А то ж вдруг чо.
> еще раз, разжевываю: бешплатный анализ достался людям, которым нафиг был не нуженНет, это я тебе еще раз разжую: в приличном обществе отвечают на такое "спасибо, конечно, но нам это без надобности". В крaсноглазом обществе отвечают: "засуньте себе этот отчет куда-нибудь - зря только время потратили на его чтение".
> Тем кто мог бы в нем покопаться - не достался. А то ж вдруг чо.
Взял бы и попросил, чо. Нет, будем впадать в теории заговора.
ну мне лень было искать рельсу и звонить в нее, при том что и рельса непойми в каком лесу закопана и есть ли вообще.И потом еще приставать к занятым людям, чтобы мне разжевали - точно тут баг, или так.
(потому что в ядре полно мест, где с кондачка не разберешься, нужно искать кого-то, кто в теме)то есть мы из той истории поняли, что чудо-софтину можно, кое-как, приспособить для анализа в freebsd, в чем, вероятно ,и был поинт. Пользы же окружающим от наспех сляпанного ради рекламы лога - никакой, чужого времени суммарно потрачено больше чем потратили авторы на запуск.
Потом они удивляются, "чогось нас никто не любит!?"
> Ты наверно за своим агрессивным отношением к пвс как-то не дочитываешь до того момента, где они пишут, что все обнаруженные проблемы отправляют разработчикам проверяемого софта. Сам не дочитал, сам заагрился - молодец.Это ты мой коммент не дочитал и заагрился. Я же написал: отправляют в виде портянки с фолсами. Чтобы просто понять, что она означает, надо нехилые умственные усмилия приложить, если только ты не каждый день на выхлоп пвс смотришь. И в итоге окажется, что реальных ошибок там полторы штуки.
> Я же написал: отправляют в виде портянки с фолсами.Ты написал:
> PVS же вываливает портянку мелких и не очень ошибок вперемешку с фолсами на всеобщее обозрение
Так что уж как написано, так и понято. И кстати, смотри ссылку выше, там и патчи есть, и объяснение по оставшимся после этого багам, почему не стали писать на них патчи.
>> PVS же вываливает портянку мелких и не очень ошибок вперемешку с фолсами на всеобщее обозрение
> Так что уж как написано, так и понято. И кстати, смотри ссылкуну то есть сам ты эти логи ни разу не открывал, тебе рабинович напел? Иначе ты бы просто знал, что в них внутри.
> выше, там и патчи есть, и объяснение по оставшимся после этого
это мертвые драйверы, остальное - ложные срабатывания или требует детального анализа - на который pvs'овцы за отведенные на этот pr-проект полтора часа оказались неспособны. А чужое время даром тратить - эт пожалуйста.
P.S. если ты у них на зарплате и тебе платят не за число постов - рекомендую на этом остановиться, потому что этим продолжается антипиар. Те, кто могут пробить финансирование такой покупки - в состоянии самостоятельно придти к тем же выводам, что и я.
> А чужое время даром тратить - эт пожалуйста.Ай, как обидно-то. А на опеннете сидеть - на это времени не жалко?
> P.S. если ты у них на зарплате и тебе платят не за число постов - рекомендую на этом остановиться, потому что этим продолжается антипиар.
Где ж вы такие параноики беретесь. Пришел тут, видите ли, сотрудник пвс из отдела маркетинга, время отнимает у бедняг. Расслабьте булки, я не из пвс, а значит могу ваше время немного поотнимать, не вызвав обиду.
>> А чужое время даром тратить - эт пожалуйста.
> Ай, как обидно-то. А на опеннете сидеть - на это времени не"компилируется". А лог так читать - не получится.
Да и я не разработчик фри, мне все равно пришлось бы настоящих отвлекать - не факт, что не на фигню какую, показавшуюся мне подозрительной - по ошибке.
А аффтары пвса могли и потратить лишние пол-часа, они-то к своим логам привычные, полагаю, фальс-алармы вычищать не особо на это тратя время. Но им было не надо и неинтересно.
"Отвлекать", "тратя время", норм у вас терминология. С секундомером по жизни идете?
Вопрос не в том, чтоб найти варнинг. Вопрос в том, чтобы понять что из этого следует.
В данном случае упрощенный аналог PV встроенный в компилятор и привел к ошибке.
> В данном случае упрощенный аналог PV встроенный в компилятор и привел к
> ошибке.нет, к ней, как обычно, привели человечьи ручонки, решившие избавиться от предупреждения, не вникая в суть.
о, там круче, там не с Wall боролись. Началось все вот с этого прекрасного:
https://lkml.org/lkml/2019/6/23/87типикал lkml, типичная вредная и ненужная придирка к чужому коду, решающему проблему.
Причем их уже попытались удовлетворить, с их придурочным coding style - но в ответ в хамской манере, как обычно, потребовали все сделать не так и вообще кланяться пониже.В результате, через пару итераций, получили стилистически прекрасное, не тригерящее Wall, ну, подумаешь - немножко неработающее (и попутно использующее ненужную переменную)
3акапывайте, этому вашему линуксу уже ничего кроме грязевых ванн, не поможет.
>3акапывайте, этому вашему линуксу уже ничего кроме грязевых ванн, не поможет.Бери лопату и закапывай, начальничек.
Сколько ты там ведёшь проектов на дофига миллионов строк кода без coding style?
В каком месте там хамство? Вполне вежливо попросили поправить оформление кода.
Есть такие личности, для которых уже сам факт подобной просьбы (по отношению к их, конечно же, идеальному коду) является высшей степенью хамства.
Это если предполагать что security это важно, нужно и must have. Если же таких предположений не делать, то отличный Linux, все довольны.
Одним словом линyпс (ляликс). Время от времени заглядываю в сырцы и ловлю лулзы. Сравните с Нетбсд - как будто-то лялих пилит студентота и модные смузихлебы, а нетку академическая профессура, качество кода - небо и земля.
согласен, на конференции в IRC #NetBSD я както сказал что все равно можно писать быдлокод, процессоры уже настолько сильные что все переварят, на что Asau сказал, что меня б за такое в реальности клавиатурой по голове стукнул в дребезги, наводил примеры из реальной жизни в программировании (. Быдлокод это плохо
У тебя в слове ышо ашипка.
Плохо, но внутри коммерчески успешных проектов внутри лютый ад частенько. А вот крисстально чистый суперкод сам по себе деньги почему то не зарабатывает.
так вы ж just for fun, не?
> так вы ж just for fun, не?судя по гомноподелиям типа сустемд или этого вашего дырявого гомноведра линyпсa, создание качественного, небольшого си-кода - искусство доступное очень немногим асам своего дела.
пох., ты хотя бы с согласен с этим?
не, ну если сравнивать с количетством md-комитеров - то да, немногим.А так-то я помню линукс конца 90х - его далеко уже не малое количество народу делало, и получалось-то, в общем, неплохо, пользоваться было вовсе не противно. Днказа пришла потом.
Ага, только где линyпс, а где *бсд?Это как с дизайнерскими творениями: выглядит красиво, но почему-то никто не спешит пользоваться.
Линукс? Почти у всех в смартфоне, телеметрию мистеру капралу отсылает. И в Goolag отсылает. Остылатикс какой-то...
а собственное мнение сформировать, вместо ориентирования на тех "кто не спешит".
Самая популярная тема под гном это "чтоб как виндовс" кнопка пуск и обои "безмятежность"
Ты тоже в тренде или как?
и это мне пишет человек, не знающий что такое ^W :-)
ну а чо - я нажал ^W - нарисовало эти буквы, я нажал, как тут посоветовали, ctrl-w - нарисовало те же самые, но стираются почему-то как одна. Непонятно.чего бы человеку, пишущему про как в винде, знать такие глупости.
про винду-то он не врет.
А у тебя есть что-то получше?
Или ты будешь рассказывать о том как классно натягивать сов^W эмуляторы терминалов на тайловый глобус?
> Ага, только где линyпс, а где *бсд?C него пишу. Полет нормальный, причем уже лет 7 как, опять.
И вообще, перефразируя: только где на десктопе винда, а где линукс?
На мобилках линукс будет замещен
на фуксию стараниями гугла.
надейся и жди - весь срок впереди...
на лоре не комильфо писать новости в будущем времени, прими себе и здесь это за правило.
Но ведь нетбсд самое решетнявое сито из всех!
Разве не поэтому Опёнок и отпочковался?
То есть я понял так: старина Линус всё сделал правильно, но где-то какие-то криворукие мейнтейнеры допустили очевиднейший факап, и об этом вся история. Сдаётся мне, я прочитал какую-то новость ни о чём. =/
Вторю этому аратору! Вот если бы было наоборот то можно было бы развести срачЪ на 100 постов о том что Линус уже не тот.
Новость о том, что Линус ещё торт.
> То есть я понял так: старина Линус всё сделал правильнонет, он закоммитил переусложненный ненужнокод, зато красиво выглядящий на его терминале 80x24.
В результате бэкпортеры нишмагли, и еще кто-нибудь когда-нибудь обязательно споткнется.
А исходная правка выглядела вот так:- struct perf_event *bp = thread->ptrace_bps[n];
+ struct perf_event *bp =
+ thread->ptrace_bps[array_index_nospec(n, HBP_NUM)];- однозначно, удобочитаемо и понятно? Не, только не для linux crowd.
А ничего, что в варианте
struct perf_event *bp = thread->ptrace_bps[n];
Используется переменная n, а не array_index_nospec, непосредственно обеспечивающий защиту от уязвимости ?
Я всю историю с правками этого кода не смотрел, но выдранный тобой вариант точно неправильный.Правки сделанные Линусом однозначно правильные и код от этого хуже читаемым не стал.
Зачем автор патча сделал эту лишнюю переменную не знаю, да она не особо мешала, но толку от нее никакого, память экономить надо и компилятор ругается.
Устал читать пошел посмотрел, что и как.
Изначально предлагали сделать
if (n < HBP_NUM) {
struct perf_event *bp =thread->ptrace_bps[array_index_nospec(n, HBP_NUM)];
А потом затребовали сделать промежуточную переменную. Получилось
int index = n;
if (n < HBP_NUM) {
index = array_index_nospec(index, HBP_NUM);
struct perf_event *bp = thread->ptrace_bps[index];
Линус исправил и сделал
if (n < HBP_NUM) {
int index = array_index_nospec(index, HBP_NUM);
struct perf_event *bp = thread->ptrace_bps[index];
Да. первый вариант самый простой. Вариант Линуса тоже вполне прост, читается может чуть-чуть лучше. Но не критично.Вариант с переменной перед if самый трудно читаемый, хранит лишнюю переменную дольше чем она нужна и вызывает ругань компилятора. А как оказалось еще и провоцирует ошибки.
Выводы:
Да придирки были хрен знает к чему.
Линус все еще торт.
Все ядра перечисленные в новости поддерживает Грег Кроа-Хартман, который лопухнулся. Ну с одной стороны с кем не бывает, с другой как же мы потом без Линуса будем.
> Линус исправил и сделал
> if (n < HBP_NUM) {
> int index = array_index_nospec(index, HBP_NUM);вот здесь и не хватает комментария: /* эта переменная нахрен не нужна, дальше следующей строки не используется и потребовалась только ради удовлетворения чувства прекрасного песателей в lkml */
> struct perf_event *bp = thread->ptrace_bps[index];
> с одной стороны с кем не бывает, с другой как же мы потом без Линуса будем.да вот так и будем. песателей с ценными советами для двустрочного патча в lkml меньше-то точно не станет, а стукнуть кулаком по столу некому будет.
Это не лишняя переменная, все правильно попросили сделать. Читаемость повысилась, производительность не пострадала (предварительная оптимизация - зло, сначала измеряй, потом оптимизируй).Если бы у тебя весь код состоял из такого треша как первый вариант, то любая правка была бы болью. В случае с разнесение на 2 строки в будущем, если тебе понадобится изменить вычисление индекса ты изменишь только первую строчку. В случае изменения структуры - только вторую. В исходном варианте и тот и тот чендж менял бы одну строчку.
Вариант Линуса самый красивый и правильный.
Зачем было исходному автору index = n писать я не знаю, похоже на некие эксперименты с кодом, которые потом забыл привести к нормальному виду.
Вывод - придирки в лкмл по делу, ошибка по невнимательности (может им пивас студию порекомендовать, хаха)
Это не первый случай. Грег лажает постоянно (я даже помню треды в lkml со словами Линуса "Грег, ты аппрувишь слишком много дерьма последнее время, останови это")
>Вариант Линуса тоже вполне прост, читается может чуть-чуть лучше.Вся игра с промежуточной переменной нужна для отладки или промежуточного логгирования.
Вариант Линуса может быть сведен компилятором к первоначальному.>А как оказалось еще и провоцирует ошибки.
На самом деле провоцирует компилятор своими коментариями на тему что переменная после не нужна.
> А ничего, что в варианте
> struct perf_event *bp = thread->ptrace_bps[n];плять. Эксперты из школы подвалили. Они даже формат diff опознать не могут...
Вот только ты писал про цепочку правок и
>- однозначно, удобочитаемо и понятно? Не, только не для linux crowd.
>-Вот я и смотрел на строку с "-" считая что это какие-то правки в цепочке.
Когда пошел и прочитал сам правки, то все стало на свои места.А про школоту, ну для меня это уже комплимент, я бы не против опять в школоту превратиться.
Кстати я запостил полный анализ кто чего правил, с признанием, что придирки были ни о чем.
До тебя. мог бы и почитать, прежде чем
> Зачем автор патча сделал эту лишнюю переменную не знаю, да она не особо мешала,Это типовая ошибка рефакторинга. Сначала пишут неосознаннле самим собой, потом выправляют и делают норм. Но тогда как раз в точности именно такие косяки часты.
Прочитать код всегда сложнее написания.
Ну я прочитал как "не ленись ставить комментарии прямо около неочевидных кусков кода, ОСОБЕННО если они даже из gcc извлекают предупреждения". Не только в хорошем и внятном commit message -- тут же рядом.
> Ну я прочитал как "не ленись ставить комментарии прямо около неочевидных кусковизначальный кусок кода - очевидный. И предупреждений не вызывал.
Когда coding style, причем не писанный, а по-понятиям, требует подобной фигни - можно уже не удивляться, что комментариев он при этом - не требует.
> ОСОБЕННО если они даже из gcc извлекают предупрежденияВот буквально только что прочитал забавное и чем-то похожее на сабж. И про ворнинги тоже.
Всячески рекомендую: https://flak.tedunangst.com/post/warning-implicit-backdoor
Стиль программирования в этом фиксе такой, как учили не делать. Можно просто код так написать, что мысль и цель будут ясны.Стиль похож на обычную невнимательность и усталость в ночи. От которой бывают как раз такие ненужные определения переменных.
> Не только в хорошем и внятном commit message -- тут же рядом.Комментарии легко отъезжают в сторону от места, где должны оставаться.
При понимании: вижу чью-то работу, но понимаю её результа (ака нашёл чужую псевдо-ошибку) нужно читать коммент к коммиту и спрашивать автора. А тут "подмахнули шашкой" не спрося.
Интересно, пожалел ли Линус после этого о принятии CoC?
> Интересно, пожалел ли Линус после этого о принятии CoC?вряд ли - там в ультиматуме каждая строчка начинается с "Please". Многие считают что это вежливо.
"Пожалуйста, лоcocните-ка моего тyнца!"
А всё потому что на месте фикса безопасности не оставили комментария с пояснением почему должно быть так, а не иначе.
исходный фикс в #2.21 Каких тебе еще нужно в нем комментариев? "оператор = выполняет присваивание"? Слепую подстановку значения обернули проверкой, все вполне ясно.Комментарии с пояснениями нужны теперь, когда вместо тривиального действия размазали на пять строк, зато по фэншую. К фиксу безопасности четыре из них ни малейшего отношения не имеют, это фикс к мозговым слизням в головах линухокод...впрочем, какие они кодеры, они комитеры. Код-то чужой.
Этот каммент пролил свет почему коммит битом "наказывают".
А всё потому, что в лялекс до сих пор не завезли юнит-тесты.
За что поха минисуют? Вроде как аргументированно всё пишет, но нет же за это ему накидывают минусики.
не обращай внимания - тут два моих старых фаната (у одного, правда, похоже, в школе отбирают мобилу) минусящих не читая любой мой коммент. Читать - их слабенькие головенки не обучены.Вот когда минусов больше двух - значит, я не зря старался, и обиженок больше.
ты бы сразу начинал свой коммент со слов "знаю, что выскажу непопулярное мнение, но..." или "знаю меня заминусят, но...", так хоть немного жыр скроешь.
Решил поговорить сам с собой?
Б — безопасность
В - выстрел в ногу
Все верно. Комментирование того что делает текущий if, for ни к чему. Ведь это так завораживающие гадать на кофейной гуще что данный код (уж тем более на Си) делает.
Выкинуть if и не понимая. Эпично. Ещё есть товаришь, не пишет коментарии к коммитам.Глупо как-то.
If никто не выкидывал.
Переменная определена не в том месте, проинициализирована значением n непойми зачем. Реальное присвоение значения index идет внутри if.
В том коде это не вызывало ошибок при выполнении, но это ошибка програмирования, так делать плохо.
И компилятор не зря ругался.
Это надо править, а не комменты писать.Грег не вникая переставил строки внутри if местами, просто чтобы убрать ругань компилятора.
То что в 1 строке была инициализация переменной для второй, он не увидел.
Т.е. причин ошибки 2:
1. плохой стиль программирования в патче.
2. непродуманные правки Грега.пох, там еще говорит, что в изначальном патче вообще была 1 строчка и ошибиться было невозможно.
и есть причина 0. требование от непонятных людей при приемке патча ввести лишнюю переменную.
Вопрос спорный. С одной стороны не такой там сложный код был, вполне читабельный, с другой вариант Линуса все же читается проще и в дальнейшем править его тоже проще.
>Переменная определена не в том месте, проинициализирована значением n непойми зачем.Это явное показание к случайной перестановке строчек кода местами. :)