The OpenNET Project / Index page

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



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

"Уязвимости в библиотеке libxml2, потенциально приводящие к выполнению кода"  +/
Сообщение от opennews (??), 19-Июн-25, 13:34 
В библиотеке Libxml2, разрабатываемой проектом GNOME и применяемой для разбора содержимого в формате XML, выявлено 5 уязвимостей, две из которых потенциально могут привести к выполнению кода при обработке специально оформленных внешних данных. Библиотека Libxml2 широко распространена в открытых проектах и, например, используется как зависимость в более чем 800 пакетах из состава Ubuntu...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=63431

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

Оглавление

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

1. Сообщение от Аноним (1), 19-Июн-25, 13:34   +1 +/
Пора переписать на Си, но чтоб без багов.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #3, #4

2. Сообщение от Аноним (2), 19-Июн-25, 13:36   –1 +/
>"на Си, но чтоб без багов. "

Ну, вы поняли.

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

3. Сообщение от Аноним (3), 19-Июн-25, 13:38   –15 +/
Пора полностью отказаться от си. И он XML тоже. Нах он нужен. Для хранения одного байта информации пихаем килобайти лишней информации
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #6, #8, #31

4. Сообщение от Аноним (6), 19-Июн-25, 13:41   +1 +/
На C++ с умными указателями.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #11, #18, #86

5. Сообщение от Аноним (-), 19-Июн-25, 13:41   –2 +/
> 5 уязвимостей, две из которых потенциально могут привести к выполнению кода
> используется как зависимость в более чем 800 пакетах из состава Ubuntu.

Ахахахаха!
Вот она сила СИстемных языков программирования!

>  Переполнение возникает при обработке очень длинных аргументов команд из-за отсутствия корректной проверки размера входных данных перед копированием данных функцией strcpy().

strcpy - "вам не нужны нормальные строки"!

> записи данных за пределы буфера из-за целочисленного переполнения при вычислении размера буфера

Классика, одобряю!

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

А ведь эти проблемы можно было предотвратить, используя нормальные современные ЯП, а не устраревший кусок kalа из прошлого тысячелетия!

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

6. Сообщение от Аноним (6), 19-Июн-25, 13:42   +1 +/
Ну тогда уж откажитесь и от HTML.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #78

7. Сообщение от Аноним (-), 19-Июн-25, 13:45   –5 +/
Сегодня прям какой-то День Унижения Дыpяшeчников.
Что случилось? В каком-то популярном анализаторе вышла обнова и кто-то решил прогнать весь сишный хлам по 100500му кругу?

Да и сами уязвимости прям сишное булщит бинго:
переполнением буфера
целочисленное переполнение + запись за пределы буфера,
use-after-free,
null dereference

Ну что, как это овнокод оправдывать будете?
Опять раст виноват?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #9, #16

8. Сообщение от Аноним (8), 19-Июн-25, 13:45   +3 +/
Так xml так себе, но чем ты заменишь xslt?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #12, #38

9. Сообщение от Аноним (6), 19-Июн-25, 13:52   +6 +/
Только в твоём воображении.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

10. Сообщение от Аноним (-), 19-Июн-25, 13:55   –3 +/
Сегодня жаркий денек.
Спецвыпуск "Сишный овнокод и его фиксы"

+    int lenn, lenp;
+    size_t lenn, lenp;
...
+    if ((ncname == NULL) || (len < 0)) return(NULL);

Тут даже комментировать нечего.

parser.c


-  if (newSize) {
+  if (newSize < 0) {
     xmlFatalErr(ctxt, XML_ERR_NAME_TOO_LONG, "VersionNum");
}
tmp = xmlRealloc(buf, newSize);

Ну кто же мог подумать что size для реалока может быть отрицательным!
Хотя... это даже логично что не может...
А какой гений решил использовать signed переменную для newSize?
И в каком это убогом недоязычке идет неявный каст signed в unsigned size_t в realloc? Не сишечка ли это часом?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #23, #36, #80, #118

11. Сообщение от Аноним (-), 19-Июн-25, 13:58   –1 +/
Дурной тон писать ядро, системные утилиты и библиотеки на Си плюс-плюс. Истинная системщина - только чистый Си.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #13, #51, #71

12. Сообщение от Аноним (12), 19-Июн-25, 13:59   +5 +/
Чем угодно. Xslt неоправданно сложный. Императивный код на любом яп, написанный в лоб, будет раз в 100 понятнее. Плюс, xslt абсолютно никакой для трансформации в режиме потока, потому что весь документ грузится в виде dom целиком. Это значит, что сто-метровый хмл будет занимать 500 метров оперативки, если не больше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

13. Сообщение от Аноним (13), 19-Июн-25, 14:05   –1 +/
> Дурной тон писать ядро, системные утилиты и библиотеки на Си плюс-плюс. Истинная  системщина - только чистый Си.

Критерии истинности в студию.

Мне казалось что системщина - это надежный код, который без ошибок работает годами.
И его раньше писали на ассемблере.

А СИшка порождает дырявый овнокод, на пеньке последние 3 новости как раз про это убожество, которое придумали для тех, кто не осилил ассемблер.
Типа ПХП из 70х.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #29, #47

14. Сообщение от Аноним (19), 19-Июн-25, 14:08   –1 +/
А вот писали бы они с помощью ИИ такой фигни бы не было.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20, #33

16. Сообщение от Аноним (16), 19-Июн-25, 14:08   +4 +/
> Ну что, как это овнокод оправдывать будете? Опять раст виноват?

На Расте ничего не написано, потому и багов нет, лол. И от целочисленного переполнения он тебя не спас бы. Он вообще не дает никаких гарантий! Синтаксис вырвиглазный! Неподдерживаемое! Абр! Абр-валг!!!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #22

17. Сообщение от Аноним (-), 19-Июн-25, 14:09   –1 +/
> Для устранения данных уязвимостей рассматривается возможность
> удаления из libxml2 поддержки языка разметки Schematron.

Да вообще libxml2 нужно отовюсюду выкинуть и заменить на что-то нормальное.
Напр. на quick-xml или xml-rs.

Иначе ситуация "более чем 800 пакетов из состава Ubuntu" оказались дырявы будет повторяться раз за разом.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #34

18. Сообщение от Аноним (13), 19-Июн-25, 14:09   –4 +/
> На C++ с умными указателями.

Но смогут ли СИшники осилить умные указатели?
Они же умные! (Указатели)

А СИшники до сих пор не могут делать зануление объекта, когда он уже не нужен((

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4 Ответы: #81

19. Сообщение от Аноним (19), 19-Июн-25, 14:09   +/
Надо было использовать ИИ ассистента.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

20. Сообщение от Аноним (13), 19-Июн-25, 14:13   +/
> А вот писали бы они с помощью ИИ такой фигни бы не было.

А ИИ на чем обучали?
На ЩитХабе и таких же кодах?
Ой, так он будет точно так же овнокодить и делать такие же ошибки.
Потому что shit in -> shit out


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #27

21. Сообщение от Аноним (21), 19-Июн-25, 14:16   +/
последнее время много криков, переписать на rust, срочно переписать!

но при этом все продолжают пережевывать это сишное #### булшит

когда от возмущения перейдете к делу?

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

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #25, #28, #52, #100

22. Сообщение от Аноним (13), 19-Июн-25, 14:18   –1 +/
Ты забыл еще пройтись по личностям и внешности раст программеров


"Все эти с цветными волосами!
Да еще радужные! А вы слышали про Asahi?
И вообще для СИшника качество кода не главное!
Главное в трусы заглянуть, вдруг скрепа разгибаться начнет"

Это существенная не доработка, ты лишен кошка-жена на неделю!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

23. Сообщение от Аноним (23), 19-Июн-25, 14:23   +1 +/
Так дело всё же в языке или в гении, который код писал!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #24, #26

24. Сообщение от Аноним (23), 19-Июн-25, 14:24   +/
*?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23

25. Сообщение от Аноним (13), 19-Июн-25, 14:24   +/
> последнее время много криков, переписать на rust, срочно переписать!

Ага

> но при этом все продолжают пережевывать это сишное #### булшит

С чего ты взял?

> когда от возмущения перейдете к делу?

Сколько было воплей и подгорания оп от таких новостей:
- В Ubuntu 25.10 решено задействовать аналог sudo, написанный на Rust
- Для FreeBSD развивают опциональную поддержку компонентов базовой системы на Rust
- Разработчики GRUB2 рассматривают возможность использования языка Rust
- Браузер Chrome переведён на шрифтовой движок Skrifa, написанный на Rust
- Для ядра Linux 6.15 предложен начальный код драйвера Nova, написанный на

на минуточку Хром это 2+ миллиарда пользоватлей, про ядро вообще молчу

> зы. я девочка дизайнер, ко мне вопросов нет!

а можно вопрос не по теме?
Сиськи не покажешь)?

> но вот вы, вы же большинство программисты, так? чего ждете?

Мы работаем в поте лица.
Но объективно: овнокода много, диды копротивляются.
Вон недавно вахтера выкинули из мейнтенеров за намерненное непринятие измененией на расте.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

26. Сообщение от Аноним (-), 19-Июн-25, 14:38   –1 +/
> Так дело всё же в языке или в гении, который код писал!

То что убогий жигулятор при аварии убивает и пешехода и часто водилу (подушки? нет не слышал) это виноват водила?
Или то что эта древность проектировалась тяп ляп?

Так же и с дыряшкой.
Язык просто неявно кастит, быдлокодер не проверяет.

Если сам автор ЯП писал "комитет сделал язык на котором невозможно писать", то наверное он знал о чем говорил.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #44, #58

27. Сообщение от Аноним (19), 19-Июн-25, 14:45   +/
Проверку длинны ИИ сделать в состоянии в отличии от коженных мешков.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #30

28. Сообщение от Аноним (19), 19-Июн-25, 14:46   +/
Rust давно устарел сейчас все на ИИ.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

29. Сообщение от Аноним (29), 19-Июн-25, 14:47   +/
>> Дурной тон писать ядро, системные утилиты и библиотеки на Си плюс-плюс. Истинная  системщина - только чистый Си.
> Критерии истинности в студию.
> Мне казалось что системщина - это надежный код, который без ошибок работает
> годами.
> И его раньше писали на ассемблере.
> А СИшка порождает дырявый овнокод, на пеньке последние 3 новости как раз
> про это убожество, которое придумали для тех, кто не осилил ассемблер.
> Типа ПХП из 70х.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

30. Сообщение от Аноним (-), 19-Июн-25, 15:03   +/
> Проверку длинны ИИ сделать в состоянии в отличии от коженных мешков.

Потому что он хоть и Искусственный, но Интеллект!

А для писания на СИшке мозг вообще не нужен.
Не сходятся типы? Кастуй к void*
Целочисленная функция должна возвращать ошибку? Пусть просто станет signed возвращает -1. Result<Value, Error> это что-то на смузихлебском.
Enum_Crocodile пытаются сравнивать с Enum_Bombardilo? Пофиг, под капотом все равно int.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #72

31. Сообщение от Аноним (31), 19-Июн-25, 15:05   –2 +/
Слова недалёкого человека. XML нужнее всех остальных форматов, ибо остальные куда уже специализированнее, а XML самый универсальный. Это не только формат для хранения и передачи данных, но ещё и команд с данными не только для выполнения команды, но ещё и для разбора что это за команда, так можно реализовать единую точку входа для всех команд, а не тонну эндпоинтов, как для REST. Хранить очень сложную структуру данных тот-же JSON не может, попробую всю страницу сайта передать в JSON (не только для заполнения формочек, а саму страницу) - не выйдет, теоретически конечно можешь, но об ручной разбор типов и экранирование - пальцы в кровь сотрёшь, и итоговый размер файла может даже и выйдет больше чем у XML.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #42, #46

32. Сообщение от Аноним (32), 19-Июн-25, 15:19   +/
Libxml2 одна из главных либ. Весь дистриб пересобирать нужно при её изменении. Вдруг что отвалится.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #37, #53, #54

33. Сообщение от нах. (?), 19-Июн-25, 15:39   +/
конечно не было бы - когда код xml-парсера не компилится или не парсит xml - никаких проблем он и не создаст.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #73

34. Сообщение от нах. (?), 19-Июн-25, 15:42   +/
> Да вообще libxml2 нужно отовюсюду выкинуть и заменить на что-то нормальное.

приступай.

Только - нормальное, а не подделку реализующую 1/100 от оригинала. (поддержку нахрен никому ненужного язычка шк070трон можешь выкинуть)

Как напишешь такую - приходи.

А пока это референсный парсер xml, и ничего на замену нет и не предвидится. Ну кроме попыток парсить xml грепом, обреченных на весьма специфичный успех.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #41

35. Сообщение от Аноним (35), 19-Июн-25, 15:43   +1 +/
> разрабатываемой проектом GNOME

Это и есть самая большая уязвимость.

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

36. Сообщение от Аноним (1), 19-Июн-25, 15:43   –2 +/
> А какой гений решил использовать signed переменную для newSize?

Дак ведь даже тут в комментах к другой новости один фанат раста решил продемонстрировать какой он крутой и... сделал точно так же. Так что сишники тут не причем, растаманы делают так же, когда берут в руки Си.

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

37. Сообщение от Аноним (-), 19-Июн-25, 15:49   +/
> Libxml2 одна из главных либ.

Поздравляю!
Одна из главных либ - кусок дырявого крэпа))
Но менять это разумеется низя, вдруг что-то отвалится!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

38. Сообщение от Аноним (-), 19-Июн-25, 15:54    Скрыто ботом-модератором+4 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

41. Сообщение от Аноним (-), 19-Июн-25, 16:56   +/
> Только - нормальное,

Типа того что сейчас))?

> а не подделку реализующую 1/100 от оригинала.

Если 95% юзеров этого достаточно, то можно и одну сотую.
А потом слушать нытье и добавлять именно то что нужно, а не "у нас тут для i286 есть костыли, их обязательно нужно перенести!!11"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #34 Ответы: #50

42. Сообщение от Аноним (42), 19-Июн-25, 17:05   –1 +/
> об ручной разбор типов и экранирование - пальцы в кровь сотрёшь

JSON.stringify/parse()?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #67

44. Сообщение от Аноним (44), 19-Июн-25, 18:00   +/
Не знаю насколько удачный ваш пример. Кто виноват и что виновато, нужно смотреть по ситуации и не факт, что убогий жигулятор виноват, зависит от того, как им управляли и что творилось на дороге. Виноватыми могут быть и водила, и пешеход.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26 Ответы: #48

46. Сообщение от Аноним (46), 19-Июн-25, 19:01   +/
А может все же лучше переделать этот огород, чтобы не требовались "очень сложные структуры данных"?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #55, #103

47. Сообщение от Аноним (47), 19-Июн-25, 19:16   –1 +/
> И его раньше писали на ассемблере.

В ассемблере хотя бы нет UB.
Но, конечно, сейчас на ассемблере писать не вариант.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #56

48. Сообщение от Аноним (47), 19-Июн-25, 19:18   –1 +/
Но что ведро с гайками повышает аварийность, спорить ведь не будете? Или его просто правильно водить надо?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #74

50. Сообщение от нах. (?), 19-Июн-25, 19:42   +/
> Если 95% юзеров этого достаточно, то можно и одну сотую.

эти 95 на винде сидят. С теми еще 2% которым недостаточно но они тоже уже там.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

51. Сообщение от Аноним (6), 19-Июн-25, 19:52   +1 +/
Про ядро никто не упоминал, речь была про парсер XML. А юзерспейс на ссовременных стандартах C++ - самое то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11 Ответы: #101, #108, #117

52. Сообщение от Аноним (6), 19-Июн-25, 20:00   –1 +/
Ага, а я - тётка-бухгалтерша.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

53. Сообщение от Аноним (6), 19-Июн-25, 20:09   +/
При багфиксе API и ABI не поменяются. Поэтому не придётся.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

54. Сообщение от Dom (?), 19-Июн-25, 20:14   +/
Есть один человек в России может пересобрать так что ничего не надо будет менять , но у него какое то кидало произошло через банк и он как мегаладон решил выжидать добычу как я понял , судя по статистике проекты годные , но как будто из будущего киберпанка и по этому немного не понятно откуда такие знания
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #32

55. Сообщение от Аноним (3), 19-Июн-25, 20:22   +/
И кто тогда будет платить деньги за поддержку "очень сложные структуры данных"?
Все упростить, еще и работать стабильно начнет. Точно уволят и возьмут кого-то на меньшую зарплату.
Делай спагетти-код и "очень сложные структуры данных"!!!!!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

56. Сообщение от Аноним (56), 19-Июн-25, 20:48   +/
>> И его раньше писали на ассемблере.
> В ассемблере хотя бы нет UB.
> Но, конечно, сейчас на ассемблере писать не вариант.

Угу-угу.
Навскидку:
https://c9x.me/x86/html/file_module_x86_id_285.html
> SAL/SAR/SHL/SHR
> The CF flag contains the value of the last bit shifted out of the destination operand; it is undefined for SHL and SHR instructions where the count is greater than or equal to the size (in bits) of the destination operand. The OF flag is affected only for 1-bit shifts (see "Description" above); otherwise, it is undefined. The SF, ZF, and PF flags are set according to the result. If the count is 0, the flags are not affected. For a non-zero count, the AF flag is undefined.
>

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #57

57. Сообщение от Аноним (47), 19-Июн-25, 21:08   +/
По-моему, здесь как раз поведение процессора вполне определённо описано.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #56 Ответы: #104, #105

58. Сообщение от Аноним (-), 19-Июн-25, 21:09   +/
> это виноват водила?

Ты неправильно вопрос ставишь, Дядя Фёдор.

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

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

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

64. Сообщение от Карлос Сношайтилис (ok), 20-Июн-25, 01:45   +/
Поэтому программы на С и быстрые:  выкинули часть проверок (здесь указатель точно валидный), сделали несколько допущений (такого размера для буфера хватит всегда), намеренно проигнорировали пару UB (тут переполнения не будет) и вуаля: быстро написанный быстрый код! Красота!

Бежать по минимуму полю всегда быстрее, чем его разминировать.

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

67. Сообщение от Аноним (67), 20-Июн-25, 08:07   +/
С потерей бигинтов и цифр в флоатах, ага.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42

71. Сообщение от Аноним (-), 20-Июн-25, 10:13   +/
SPARK?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

72. Сообщение от Аноним (19), 20-Июн-25, 10:59   +/
Дообучи ИИ как надо и он тебе исправит что угодно во всем проекте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

73. Сообщение от Аноним (19), 20-Июн-25, 11:00   +/
То что ты не умеешь пользоваться ИИ и не в состоянии написать нормальный промт виноват только ты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #33 Ответы: #77

74. Сообщение от нейм (?), 20-Июн-25, 11:12   +/
любая машина = ведро с гайками = средство передвижения повышенной опасности (или как оно там в пдд)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #76, #91, #106

76. Сообщение от Аноним (-), 20-Июн-25, 11:27   +1 +/
> любая машина = ведро с гайками = средство передвижения повышенной опасности

Разумеется.
Но безопасность вещь измеримая. Причем по различным критериям (для водителя, для пассажира, для пешихода и тд). И достигается это целыми схемами пассивной и активной безопасности.

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

Так и тут. Не существует абсолютного решения, но если есть то, которое может уменьшить кол-во проблем напр. на 30 (50, 70, whatever) процентов - то это уже решение.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

77. Сообщение от нах. (?), 20-Июн-25, 11:40   +/
> То что ты не умеешь пользоваться ИИ и не в состоянии написать
> нормальный промт виноват только ты.

ну ты-то умеешь, ии за тебя уже три хеловрота написал?

А мы так и будем жить с libxml2 и еще более ужасным xslt, автор которого видимо либо от старости помер либо в монастырь ушел, тяжкий грех до конца своих дней замаливать.

Поскольку твои хеловроты его не заменят решительно никак.

Скорее уж хрустики подтянутся и перепишут-перепишут (еще лет за двадцать, их темпами быстрее от борова не убежишь). Может даже ии припрягут, от борова бегать ему самое то занятие.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73 Ответы: #107

78. Сообщение от Аноним (78), 20-Июн-25, 12:18   +/
внезапно, изначально был PS и PDF
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #102

79. Сообщение от Аноним (108), 20-Июн-25, 12:22   +/
Господа сишники, вот к чему приводит отсутствие нормальной типизации. Для исправления данных уязвимостей нужно как минимум афинные типы использовать, но желательно ещё и зависимые добавить. Ну или просто быть внимательнее, чему сишники никак не научатся.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #85

80. Сообщение от ptr (ok), 20-Июн-25, 12:51   –1 +/
Проблема не в языке, а в руках.
Например, в некотором языке значение res будет иметь разные значения (0 или 0.01), в зависимости кодогенератора LLVM и опций его оптимизатора:
let a: f32 = 1E-64;
let b: f32 = 1E64;
let c: f32 = 1E126;
let res = a/b*c;

Видите классический UB с исчезновением порядка?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10 Ответы: #82, #84

81. Сообщение от Аноним (108), 20-Июн-25, 12:56   +/
>А СИшники до сих пор не могут делать зануление объекта, когда он уже не нужен((

Хватит повторять эту ошибку. Если объектом владеет только один указатель, то занулять ничего не надо, и у нас получается что-то типа раста. Если объектом владеет несколько указателей и есть gc, то рантайм сам разберётся. Если gc нет, и продвинутых типов тоже нет, а владеет несколько указателей, то нужен двойной указатель, чтобы все владения обнулились сразу же, но это ухдшит производительность. В противном случае, проблема останется. Так что в си решения по прежнему нет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

82. Сообщение от Аноним (-), 20-Июн-25, 13:19   +/
> Проблема не в языке, а в руках.

Но тут нет UB. Проблема именно в языке.
xmlRealloc принимает size_t.
void* (*xmlReallocFunc) (void *mem, size_t size);

Туда передается int newSize;
Если бы язык был к такому строг и требовал явной конвертации signed в unsigned - то с 99% вероятностью проблемы не произошло.

Почему так сделано? А потому что xmlGrowCapacity возвщает не только значение, а еще и ошибку -1.
github.com/GNOME/libxml2/blob/477f9c6b20ef4a0745aefe735e9ebc7573a4fdae/include/private/memory.h#L32

Почему? Потому нет нормального возврата ошибок на уровне языка
Если бы там возвращался условый Result<Value, Error> то сама такая ситуация была бы невозможна - result нужно было бы "развернуть", а ошибку или обработать, или СОЗНАТЕЛЬНО проигнорировать. Т.е. это опять ограниченность языка.

К программисту претензия только в том, что он не полез в xmlGrowCapacity и посмотрел на возвращаемые значения. Но это бы не спасло от ситуации, когда -1 добавлися бы после написания кода, который использует функцию - копилятор точно также неявно все закастил и отстрелил ногу.

> Например, в некотором языке значение res будет иметь разные значения (0 или 0.01),
> в зависимости кодогенератора LLVM и опций его оптимизатора

Проблема не в языке. Evaluation order языком определен однозначно.
А проблема в конкретной имплементации конкретного компилятора. Я ведь тоже могу накидать различий в выхлопе в другом языке при применении различных оптимизаций.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80 Ответы: #83

83. Сообщение от ptr (ok), 20-Июн-25, 13:23   +/
> Но тут нет UB.

А при чем тут UB, если проблема именно в руках?

> Evaluation order языком определен однозначно.

Но не определено, будет ли промежуточный результат из 80-х битных регистров FPU сохраняться в память или останется в регистре. Проблема то именно в этом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82 Ответы: #93

84. Сообщение от Аноним (108), 20-Июн-25, 13:26   +/
>Проблема не в языке, а в руках.

Проблема в руках, которые берут этот язык. Ибо одни языки сопротивляются г-коду, а другие наоборот, этот самый г-код поощрают.
>Например, в некотором языке значение res будет иметь разные значения (0 или 0.01)

В каком? Rust, например сразу же выдаёт ошибку компиляции, у ocaml вообще другой синтаксис, и основной компилятор llvm не использует.
>Видите классический UB с исчезновением порядка?

Я вижу ошибку компиляции. Хороший компилятор сделал своё дело.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #80 Ответы: #92

85. Сообщение от Аноним (-), 20-Июн-25, 13:28   +/
>Господа сишники, вот к чему приводит отсутствие нормальной типизации.

Вы о чём?

>Для исправления данных уязвимостей нужно как минимум афинные типы использовать

Ах вот о чём! Господа, ну что скажем этому оленю? В простом языке он захотел заиметь алгебраический тип данных.

>у или просто быть внимательнее, чему сишники никак не научатся.

Среди нас есть разные люди, и с разной концентрацией внимания. Если бы сишники не были внимательными, то до сегоднешнего дня, ни одна Unix-подобная операционная система не состоялась бы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79 Ответы: #89, #90

86. Сообщение от Аноним (108), 20-Июн-25, 13:28   +/
Кресты даже в лучшем случае исправят только часть ошибок с памятью.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

89. Сообщение от Аноним (108), 20-Июн-25, 13:35   +/
>В простом языке он захотел заиметь алгебраический тип данных.

В си просты только спецификации, писать на си крайне трудно.
>Среди нас есть разные люди, и с разной концентрацией внимания.

Ну как видим, у сишников, писавших libxml2 концентрации явно не хватило. И сюда ненастоящие сишники прорвались.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85

90. Сообщение от Аноним (-), 20-Июн-25, 13:36   +/
> Среди нас есть разные люди, и с разной концентрацией внимания.

Сишка было создана для портирования юниксов. А кодовая база тех юникосов была 50-100 kLOC.
В ядре линя сейчас 40 MLOC кода. Было. Возможно уже больше.
В итоге кодовая база растет, а концентрация внимания людей нет.
Ну или тоже немного растет, но прям с разными порядками скоростей.

> Если бы сишники не были внимательными

Так сишники и так не внимательные. Вот тут не заметили что функция может вернуть ошибку.

> то до сегоднешнего дня, ни одна Unix-подобная
> операционная система не состоялась бы.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #85 Ответы: #111

91. Сообщение от Аноним (91), 20-Июн-25, 13:37   +/
Горит сарай - гори и хата!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

92. Сообщение от ptr (ok), 20-Июн-25, 13:37   +/
>>Видите классический UB с исчезновением порядка?
> Я вижу ошибку компиляции. Хороший компилятор сделал своё дело.

И где Вы увидели ошибку компиляции? Здесь классический UB, связанный с тем, было ли сохранение промежуточного результата из 80-битного регистра FPU в память с преобразованием его в f32 или нет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84 Ответы: #94, #95

93. Сообщение от Аноним (-), 20-Июн-25, 13:40   +/
> если проблема именно в руках?

Где?
Я расписал именно недостатки языка и его выразительности, которые привели к ошибке.
А вы пишите "именно в руках". Ну так раскройте свою мысль почему все аргументы про неявный каст и отсутствие ошибок на уровне языка не валидны.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #83

94. Сообщение от Аноним (-), 20-Июн-25, 13:43   +/
> И где Вы увидели ошибку компиляции?

godbolt.org/z/GfcbTeY4T

error: literal out of range for `f32`
  --> <source>:12:18
   |
12 |     let b: f32 = 1E64;
   |                  ^^^^
   |
   = note: the literal `1E64` does not fit into the type `f32` and will be converted to `f32::INFINITY`
   = note: `#[deny(overflowing_literals)]` on by default

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92

95. Сообщение от Аноним (108), 20-Июн-25, 13:43   +/
>И где Вы увидели ошибку компиляции?

Вы для начала язык назовите, а то телепаты в отпуске. Проверял здесь https://play.rust-lang.org/?version=stable&mode=debug&editio...

Compiling playground v0.0.1 (/playground)
error: literal out of range for `f32`
--> src/main.rs:3:18
  |
3 |     let b: f32 = 1E64;
  |                  ^^^^
  |
  = note: the literal `1E64` does not fit into the type `f32` and will be converted to `f32::INFINITY`
  = note: `#[deny(overflowing_literals)]` on by default

error: literal out of range for `f32`
--> src/main.rs:4:18
  |
4 |     let c: f32 = 1E126;
  |                  ^^^^^
  |
  = note: the literal `1E126` does not fit into the type `f32` and will be converted to `f32::INFINITY`

error: could not compile `playground` (bin "playground") due to 2 previous errors

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #92 Ответы: #96

96. Сообщение от ptr (ok), 20-Июн-25, 14:04   +/
> https://play.rust-lang.org/?version=stable&mode=debug&editio...

Простите, по памяти писал.
Правильно так:
fn main() {
    let a: f32 = 1E-23;
    let b: f32 = 1E23;
    let c: f32 = 1E38;
    let res = a/b*c;
    println!("{}",res);
}

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #95 Ответы: #97

97. Сообщение от Аноним (108), 20-Июн-25, 14:55   +/
Ну отлично, теперь это хотя бы компилируется. Но заявленного вами поведения не наблюдаю, и в дебаге и в релизе выдаёт 0.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #96 Ответы: #98

98. Сообщение от Аноним (-), 20-Июн-25, 15:04   +/
> Ну отлично, теперь это хотя бы компилируется. Но заявленного вами поведения не
> наблюдаю, и в дебаге и в релизе выдаёт 0.

"в зависимости кодогенератора LLVM и опций его оптимизатора"
Скорее всего нужна конкретная версия компилятора, уровень оптимизаций и возможно флаги.
Так что удачки это повторить.

При этом это все равно останется UB реализации, а не языка.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #97 Ответы: #99

99. Сообщение от Аноним (108), 20-Июн-25, 15:23   +/
>Скорее всего нужна конкретная версия компилятора, уровень оптимизаций и возможно флаги.

Скорее всего это просто баг llvm-а. Некоторые языки, тот же ocaml от llvm не зависят вообще. А вот ub в си возникает стабильно. Хоть на gcc, хоть на llvm, хоть на msvc. Ну может на экзотике типа tcc не возникает, пока туда оптимизаций не завезли, как завезут, так там тоже возникнут.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #98

100. Сообщение от Аноним (108), 20-Июн-25, 15:26   +/
>но вот вы, вы же большинство программисты, так? чего ждете?

Вы хоть представляете сколько тут работы? А так, процесс идёт. Что на go переписывают, что на rust, что изначально на ocaml или другом языке пишут.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

101. Сообщение от Аноним (101), 20-Июн-25, 16:11   +/
Зато упоминали системные утилиты и библиотеки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

102. Сообщение от Аноним (102), 20-Июн-25, 17:07   +2 +/
Где был? Изначально — это как? Проснулись пещерные люди, смотрят: а на полу PS и PDF лежат?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78

103. Сообщение от Аноним (102), 20-Июн-25, 17:12   +1 +/
Да, давай. Все только за будут. Всего-то нужно сложность решаемых задач понизить, и дело в шляпе, обойдёмся одним массивом байтов на всё про всё. А если одни только hello world писать, то может быть и вовсе без структур данных обойдёмся. А там и от компьютера можно отказаться, вон в древнем Египте на глиняных табличках бухгалтерию вели, и ничего, великая страна была, могла показать!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

104. Сообщение от Аноним (56), 20-Июн-25, 17:15   +/
>> SHL r/m8,CL    Multiply r/m8 by 2, CL times.
>> The OF flag is affected only for 1-bit shifts (see "Description" above); otherwise, it is undefined
>> The CF flag contains the value of the last bit shifted out of the destination operand; it is undefined for SHL and SHR instructions where the count is greater than or equal to the size (in bits) of the destination operand.

--
> По-моему, этодругоевынепонимаете!

🙄


https://c9x.me/x86/html/file_module_x86_id_19.html
> Searches the source operand (second operand) for the least significant set bit (1 bit).
> If the content of the source operand is 0, the content of the destination operand is undefined.

А уж написать что-то ассемблирующееся, но с "unpredictable behavior" - вполне можно только так
https://cr.yp.to/2005-590/x86-volume2a.pdf

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

105. Сообщение от Аноним (102), 20-Июн-25, 17:18   +/
>> it is undefined for SHL and SHR instructions…
>> undefined
> поведение процессора вполне определённо описано

Это многое объясняет! На си не пишешь случайно?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #113

106. Сообщение от Аноним (102), 20-Июн-25, 17:33   +/
Любая, рано или поздно, но дьявол в деталях. Мне в жизни довелось дважды (и успешно!) совершить один и тот же опасный номер на двух разных автомобилях: уклониться от препятствия на трассе зимой в снегопад на скорости 80км/ч. Жигуль раскрутило, почти вылетел на встречку под фуру, но в последний момент смог найти достаточно сцепления с дорогой и вырулить. Второй раз делал то же самое на бмв с xdrive, пассажиры даже толком не заметили ничего. А так да, ведро с гайками что одна, что вторая. Когда продавал оба раза радовался.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

107. Сообщение от Аноним (102), 20-Июн-25, 17:59   +/
> ну ты-то умеешь, ии за тебя уже три хеловрота написал?

Если твоя кодобаза состоит из «хеловротов» — напишет «хеловрот». У нас кодобаза в основном сложный процессинг данных, и таки ии генерит по ней отличный код, если правильно попросить. Но чтобы правильно попросить надо хорошо знать что ты хочешь, поэтому эта чалма работает только со сковородой в штанах, в том смысле что надо хорошо знать предметную область чтобы, во-первых, написать запрос, и, во-вторых, понять не лажа ли ответ. Иными словами, это профессиональный инструмент для ускорения процесса разработки, а не штука, которая за тебя всё делать будет. Штука, которая за тебя всё делать будет называется джун или интерн, но там и промпты куда сложнее, и выхлоп надо куда внимательнее проверять.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #109

108. Сообщение от Аноним (108), 20-Июн-25, 18:09   +/
>А юзерспейс на ссовременных стандартах C++ - самое то.

Спасибо, не надо. Такое впечатление, что крестовиков хаскелисты покусали.

https://habr.com/ru/companies/jugru/articles/438260/ - «Современный» C++: сеанс плача с причитаниями

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

109. Сообщение от Аноним (108), 20-Июн-25, 18:11   +1 +/
>Штука, которая за тебя всё делать
>и выхлоп надо куда внимательнее проверять.

Взаимоисключающие утверждения.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #107 Ответы: #110

110. Сообщение от нах. (?), 20-Июн-25, 18:35   +/
не, все правильно - он такой конечно сделает, что сказали, а не будет галлюционировать, и даже наверное догадается задать дополнительные вопросы ДО того как бросаться кодить.

Но быстрее опять окажется самому все запилить.

Так что новой libxml без багов от ИИ по прежнему не дождемся, потому что ЭТОТ джун даже переспросить без пинка не догадается если что не понял. И даже поправить баги в старой хрен там, потому что "в контекстное окно не лезет".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109

111. Сообщение от Аноним (111), 20-Июн-25, 21:46   +/
40M строк кода решаются выделением драйвера АМД и другой фигни в отдельные модули.

Но это потребует хотя бы на какое-то время и хотя бы в одну сторону STABLE API...

Но Торвальдс заранее продекламировал, что это невозможно. ХЗ, может и так...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90 Ответы: #114

112. Сообщение от Аноним (78), 20-Июн-25, 22:26   +/
> перед копированием данных функцией strcpy

в 21-ом веке у сишников так и нету нормальных строк...

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #120

113. Сообщение от Аноним (47), 20-Июн-25, 23:28   +/
Аноним увидел слово undefined, дальше всё как в тумане.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105

114. Сообщение от Аноним (-), 20-Июн-25, 23:38   +/
> Но это потребует хотя бы на какое-то время и хотя бы в одну сторону STABLE API...

Не будет такого.

> Но Торвальдс заранее продекламировал, что это невозможно. ХЗ, может и так...

Это не невозможно, это противоречит модели разработки ядра линукса.
Ядро должно все время требовать подпиливания и подкручивания, чтобы всей толпе мейнтейнеров на зп было чем заняться. Иначе представь - взял ты дрова АМД и они работают на всей мажорной версии ядра! Ужас!

А так обновился с 6.12.27 до 6.12.30 и драйвер накрылся (linux.org.ru/forum/linux-hardware/18001697). Значит кто-то должен его пойти и заадоптить.
Все при деле, все довольны. А главное донатить LF перестать нельзя))


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

116. Сообщение от Golangdev (?), 21-Июн-25, 00:28   +/
> Уязвимости в библиотеке libxml2

просто используйте JSON =)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #121

117. Сообщение от Аноним (117), 21-Июн-25, 01:53   +/
Ну а в ядре тогда как xml парсить?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

118. Сообщение от qwe (??), 21-Июн-25, 01:54   +/
> +    int lenn, lenp;
> +    size_t lenn, lenp;

Когда копировал этот кусок патча, ничего странного не заметил, умник?

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

119. Сообщение от Аноним (117), 21-Июн-25, 02:25   +/
expat надо использовать
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #122

120. Сообщение от Карлос Сношайтилис (ok), 21-Июн-25, 13:35   +/
Если в С добавить полноценные строки, это будет уже не С
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #112

121. Сообщение от Карлос Сношайтилис (ok), 21-Июн-25, 13:38   +/
Хрен редьки не слаще: и его надо парсить. А это слабое место С – вылезут все классические ошибки с буферами, переполнения и прочее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #116 Ответы: #123

122. Сообщение от Карлос Сношайтилис (ok), 21-Июн-25, 13:50   +/
Его можно использовать только для чтения.
Плюс, он не поддерживает современные спеки XML
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119

123. Сообщение от Golangdev (?), 21-Июн-25, 17:41   +/
Ну тогда используйте нормальные языки, такие как Go / Java / Rust

Ну или если совсем "прикипели" к C / C++ - настройте сканеры / линтеры / санитайзеры, как это делает Google при сборке Chrome

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #121


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

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




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

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