The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Ошибка в GCC привела к игнорированию режима выявления пробле..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от opennews (??) on 19-Мрт-17, 11:43 
Разработчики Fedora Linux столкнулись (https://lists.fedoraproject.org/archives/list/devel-announce.../) с заслуживающей внимания проблемой, связанной с ненадлежащей работой предоставляемых в GCC дополнительных проверок для блокирования проблем, вызванных ошибками форматирования строки. Начиная с Fedora 21 пакеты в дистрибутиве собираются (https://fedoraproject.org/wiki/Changes/FormatSecurity) с опцией "-Werror=format-security", которая приводит к выводу ошибки в случае выявления компилятором GCC проблем с форматированием строк, которые потенциально могут привести к появлению уязвимостей.


В процессе тестирования новой ветки Fedora, в которой будет задействован GCC 7 (релиз GCC 7 ожидается в апреле), разработчики столкнулись с ошибкой, вызванной тем, что флаг "-Werror=format-security" игнорировался при определённом стечении обстоятельств. В итоге возникла ситуация когда массовая пересборка всех пакетов проходила без ошибок, но фактически сборка ряда пакетов должна была завершиться ошибкой, чего не произошло и проблемы с форматированием строк в данных пакетах оставались незамеченными.


Проблема всплыла только после внесения в GCC 7 изменения (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79677), исправляющего ошибку (https://bugzilla.redhat.com/show_bug.cgi?id=1425825) разбора параметров командной строки (одновременное указание "-Werror=format-security" и "-Wall" или "-Wformat" приводило к игнорированию "-Werror=format-security"). Ошибка присутствует достаточно давно и проявлялась (https://gcc.gnu.org/ml/gcc-bugs/2012-04/msg02134.html) как минимум в ветке GCC 4. При обновлении GCC 7 некоторые пакеты в Fedora перестали собираться и уполномоченным разработчикам пришлось в экстренном порядке вносить правки (как правило замена  printf(variable) на printf("%s", variable)), не дожидаясь реакции мэйнтейнеров.


Дополнительно можно отметить решение (https://lists.fedoraproject.org/archives/list/devel-announce.../) отложить альфа-выпуск Fedora 26 на одну неделю  в связи с невыполнением критериев качества.
В частности, в репозитории остаются неисправленными 4 проблемы (https://qa.fedoraproject.org/blockerbugs/milestone/26/alpha/...), которые отнесены к категории блокирующих выпуск: проблемы с настройкой ssh-ключей в cloud-init, сбой в запуске gnome-initial-setup, если в инсталляторе не был добавлен пользователь, крах пакета с ядром на  Allwinner SoC, проблемы с настройкой FreeIPA  в инсталляторе. В качестве новой даты релиза Fedora 26 названо (https://fedoraproject.org/wiki/Releases/26/Schedule) 20 июня, вместо изначально запланированного 6 июня.  Напомним, что начиная с Fedora 27 подготовка альфа-выпуска будет упразднена (https://www.opennet.ru/opennews/art.shtml?num=46173).

URL: https://lists.fedoraproject.org/archives/list/devel-announce.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=46224

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Аноним (??) on 19-Мрт-17, 11:43 
А почему не на puts(variable)?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –12 +/
Сообщение от Аноним email(??) on 19-Мрт-17, 12:13 
у gcc вообще основная фича, в том что они косячут и годами эти ошибки не хотят исправлять. причем ошибки на ошибки у них там вполне накладываться друг на друга могу. ну а то что все управляющие флаги игнорируются в чём то, и всегда генерется определенный код это уже каноническая особенность gcc, например попробуйте без cmov комманд бинарник делать.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +10 +/
Сообщение от фывфыв on 19-Мрт-17, 12:17 
Потому-что puts() добавляет '\n' в конце.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

7. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –2 +/
Сообщение от freehck email(ok) on 19-Мрт-17, 12:20 
> у gcc вообще основная фича, в том что они косячут и годами эти ошибки не хотят исправлять.

Ммм, как интересно.

> В процессе тестирования новой ветки Fedora, в которой будет задействован GCC 7 (релиз GCC 7 ожидается в апреле)

А может быть проблема в том, что Fedora, которая испытательный-полигон-на-пользователях-для-RedHat пихает в продакшен нерелизнутые версии компилятора?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +5 +/
Сообщение от нонанон on 19-Мрт-17, 12:33 
> А может быть проблема в том, что Fedora, которая испытательный-полигон-на-пользователях-для-RedHat пихает в продакшен нерелизнутые версии компилятора?

Ну сказано же ну: "Ошибка присутствует достаточно давно и проявлялась как минимум в ветке GCC 4"

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

15. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от freehck email(ok) on 19-Мрт-17, 13:25 
На то он и тестируемая ветвь компилятора, чтобы выявлять вот такие вот баги. Да, некоторые из них старые, но ведь вскрылось-то только сейчас. Это вообще весьма распространённое явление в больших проектах, когда две ошибки компенсируют друг друга, и остаются незамеченными долгое время.

Вот если бы об ошибке знали, начиная с релиза GCC4 и игнорировали - был бы уже другой разговор. А вот на таких вот новостях кричать "косячат и не хотят исправлять" - нонсенс.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Аноним (??) on 19-Мрт-17, 13:46 
Короче, мы вас поняли, все версии gcc с 4 по 7 - тестовый полигон, косяки в них не считаются.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

19. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +3 +/
Сообщение от Аноним (??) on 19-Мрт-17, 14:16 
Ошибка в том что компилировалось, хотя не должно было. А в GCC 7 исправили. И теперь не компилится.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

20. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +2 +/
Сообщение от Аноним (??) on 19-Мрт-17, 14:31 
До этой части что не позволило дочитать?
> Проблема всплыла только после внесения в GCC 7 изменения, исправляющего ошибку разбора параметров командной строки
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

23. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –3 +/
Сообщение от Аноним (??) on 19-Мрт-17, 15:19 
> в которой будет задействован GCC 7 (релиз GCC 7 ожидается в апреле),

Я правильно понял: взяли сырой билд и надулись, что он не работает как стабильный релиз?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от axredneck on 19-Мрт-17, 16:45 
С gcc 4, 5, 6 та же проблема
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

25. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –7 +/
Сообщение от ytrewq on 19-Мрт-17, 19:07 
не заблуждай, почитай ман вначале
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

26. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +1 +/
Сообщение от Аноним (??) on 19-Мрт-17, 19:20 
Наоборот, в GCC 7 поправили древний баг и после этого в Fedora перестала собираться куча пакетов.
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

27. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –2 +/
Сообщение от Аноним (??) on 19-Мрт-17, 20:06 
> Наоборот, в GCC 7 поправили древний баг и после этого в Fedora перестала собираться куча пакетов.

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

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

28. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –2 +/
Сообщение от Sabakwaka (ok) on 19-Мрт-17, 20:26 
>> А почему не на puts(variable)

Потому, что строковая строка?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

29. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от RobotsCantPoop on 19-Мрт-17, 21:09 
А если в GCC исправить все баги, то перестанет собираться вообще всё?
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

30. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –4 +/
Сообщение от Я (??) on 19-Мрт-17, 22:01 
Потому что компилятор сам заменит printf() на puts()
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

31. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +3 +/
Сообщение от фывфыв on 19-Мрт-17, 22:39 
Не тупи, прочитай стандарт.
> The puts function writes the string pointed to by s to the stream pointed to by stdout, and appends a new-line character to the output.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1548.pdf

Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

33. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Аноним (??) on 19-Мрт-17, 23:46 
Эти пакеты не должны были собираться с опцией "-Werror=format-security", так как в них был кривой код, на который эта опция обязана выдавать ошибку.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

34. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от Аноним (??) on 20-Мрт-17, 04:26 
> printf(variable) на printf("%s", variable))

Что за адский хардкодер лабает такие вещи?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

35. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Аноним (??) on 20-Мрт-17, 05:37 
Больше чем ты думаешь. Такое даже в sudo находили (кажется было в отладочных сообщениях, включалось через -vvvvvv).
Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

39. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –2 +/
Сообщение от nobody (??) on 20-Мрт-17, 09:47 
Не исключено :-) В мире GNU во всяком случае.
Ну а вообще в MS VC++ всё ещё хуже. Там десятилетиями даже С++98 правильно не реализован. Сейчас, вроде, взялись за ум, даже на обратную совместимость плюнули. Поглядим, что из этого выйдет
Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

40. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –3 +/
Сообщение от nobody (??) on 20-Мрт-17, 09:50 
> Ошибка присутствует достаточно давно и проявлялась как минимум в ветке GCC 4
> отложить альфа-выпуск Fedora 26 на одну неделю в связи с невыполнением критериев качества. В частности, в репозитории остаются неисправленными 4 проблемы, которые отнесены к категории блокирующих выпуск

То есть больше 10 лет баги никто не видел, с ними выпускали релизы, а тут вдруг внезапно они стали блокирующими :-\

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

41. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –3 +/
Сообщение от anonymous (??) on 20-Мрт-17, 09:53 
> одновременное указание "-Werror=format-security" и "-Wall" или "-Wformat"

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Мальчикдевопс on 20-Мрт-17, 10:17 
но только если в конце printf есть '\n'
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

43. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от Аноним (??) on 20-Мрт-17, 10:36 
https://linux.slashdot.org/story/09/07/29/1925224/alan-cox-q... (там есть ссылка на lkml.org)
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

44. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +2 +/
Сообщение от Michael Shigorin email(ok) on 20-Мрт-17, 11:07 
> Ошибка в том что компилировалось, хотя не должно было.
> А в GCC 7 исправили. И теперь не компилится.

Как там было у Немет: "если программа собралась с первого раза -- позовите системного программиста, он исправит компилятор".

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

45. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –2 +/
Сообщение от snmp agent on 20-Мрт-17, 13:04 
Интересно, я один не врубался, о каких "проблемах с форматированием строк" речь, пока не посмотрел в man gcc?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

48. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от Аноним (??) on 20-Мрт-17, 14:04 
Уж сколько лет известно об printf format string уязвимостях, а люди упорно используют printf даже в С++ программах, вместо iostreams.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

49. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от анонимус вульгарис on 20-Мрт-17, 14:27 
Нет, поправили древний баг, после чего стала собираться кучка пакетов с дырявым кодом, который должен был зафейлить сборку.
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

50. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от анонимус вульгарис on 20-Мрт-17, 14:32 
Рекомендую почитать:
https://www.securecoding.cert.org/confluence/display/c/FIO30...
Там ещё много интересного.
Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

51. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  –1 +/
Сообщение от Аноним (??) on 20-Мрт-17, 15:35 
Зачем MS какие-то стандарты? Они сами - стандарт!
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

53. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +3 +/
Сообщение от Аноним (??) on 20-Мрт-17, 18:42 
> Интересно, я один не врубался, о каких "проблемах с форматированием строк" речь,
> пока не посмотрел в man gcc?

Нет, вас таких много:
https://www.cvedetails.com/google-search-results.php?q=forma...

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

54. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от freehck email(ok) on 20-Мрт-17, 21:39 
Ну так уязвимости форматных строк - сродни XSS в браузерах. Не давайте пользователю заполнять формат, и всё будет хорошо.
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

55. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +1 +/
Сообщение от Led (ok) on 21-Мрт-17, 00:46 
> Поглядим, что из этого выйдет

Вендузятник должен не поглядеть, а страдать.


Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

56. "Ошибка в GCC привела к игнорированию режима выявления пробле..."  +/
Сообщение от nobody (??) on 21-Мрт-17, 09:59 
Вот слава Аллаху, что эти времена проходят. Сейчас осталось только две программные платформы: POSIX и Windows. Жду не дождусь, когда последняя или сдохнет, или переродится в POSIX. Это будет оргазм для системного программиста
Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру