The OpenNET Project / Index page

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



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

"Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от opennews (?), 30-Окт-24, 00:02 
Опубликованы корректирующие выпуски X.Org Server 21.1.14 и DDX-компонента (Device-Dependent X) xwayland 24.1.4, обеспечивающего запуск X.Org Server для организации выполнения X11-приложений в окружениях на базе Wayland. В новых версиях  устранена уязвимость (CVE-2024-9632), которая может быть эксплуатирована для повышения привилегий в системах, в которых X-сервер выполняется с правами root, а также для удалённого выполнения кода в конфигурациях, в которых для доступа используется перенаправление сеанса X11 при помощи SSH...

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

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

Оглавление

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


2. Скрыто модератором  –14 +/
Сообщение от Аноним (-), 30-Окт-24, 00:13 
Ответить | Правка | Наверх | Cообщить модератору

3. Скрыто модератором  –14 +/
Сообщение от Аноним (-), 30-Окт-24, 00:18 
Ответить | Правка | Наверх | Cообщить модератору

34. Скрыто модератором  +1 +/
Сообщение от xPhoenix (ok), 30-Окт-24, 08:47 
Ответить | Правка | Наверх | Cообщить модератору

36. Скрыто модератором  –1 +/
Сообщение от MegaFon929 (ok), 30-Окт-24, 08:56 
Ответить | Правка | Наверх | Cообщить модератору

38. Скрыто модератором  +4 +/
Сообщение от Аноним (38), 30-Окт-24, 09:27 
Ответить | Правка | Наверх | Cообщить модератору

72. Скрыто модератором  +/
Сообщение от MegaFon929 (ok), 30-Окт-24, 16:37 
Ответить | Правка | Наверх | Cообщить модератору

41. Скрыто модератором  +/
Сообщение от Аноним (41), 30-Окт-24, 10:10 
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

45. Скрыто модератором  +1 +/
Сообщение от Анонимemail (45), 30-Окт-24, 10:48 
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

53. Скрыто модератором  –1 +/
Сообщение от Афроним (?), 30-Окт-24, 11:31 
Ответить | Правка | Наверх | Cообщить модератору

60. Скрыто модератором  +3 +/
Сообщение от Аноним (60), 30-Окт-24, 12:52 
Ответить | Правка | Наверх | Cообщить модератору

61. Скрыто модератором  +/
Сообщение от Афроним (?), 30-Окт-24, 12:59 
Ответить | Правка | Наверх | Cообщить модератору

89. Скрыто модератором  –1 +/
Сообщение от X86 (ok), 30-Окт-24, 21:11 
Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

37. Скрыто модератором  +/
Сообщение от Аноним (37), 30-Окт-24, 09:13 
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

57. Скрыто модератором  +/
Сообщение от randomize (?), 30-Окт-24, 11:57 
Ответить | Правка | Наверх | Cообщить модератору

58. Скрыто модератором  –1 +/
Сообщение от randomize (?), 30-Окт-24, 11:59 
Ответить | Правка | Наверх | Cообщить модератору

66. Скрыто модератором  +/
Сообщение от AleksK (ok), 30-Окт-24, 13:56 
Ответить | Правка | К родителю #57 | Наверх | Cообщить модератору

71. Скрыто модератором  +/
Сообщение от Аноним (71), 30-Окт-24, 16:37 
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

82. Скрыто модератором  +/
Сообщение от Аноним (-), 30-Окт-24, 18:24 
Ответить | Правка | Наверх | Cообщить модератору

74. Скрыто модератором  +/
Сообщение от Аноним (74), 30-Окт-24, 17:13 
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

40. Скрыто модератором  +1 +/
Сообщение от Шарп (ok), 30-Окт-24, 09:32 
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

42. Скрыто модератором  +/
Сообщение от iPony129412 (?), 30-Окт-24, 10:12 
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

50. Скрыто модератором  –2 +/
Сообщение от Аноним (50), 30-Окт-24, 11:20 
Ответить | Правка | Наверх | Cообщить модератору

67. Скрыто модератором  –1 +/
Сообщение от Аноним (-), 30-Окт-24, 15:28 
Ответить | Правка | Наверх | Cообщить модератору

70. Скрыто модератором  +/
Сообщение от iPony129412 (?), 30-Окт-24, 16:37 
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

65. Скрыто модератором  +/
Сообщение от zog (??), 30-Окт-24, 13:52 
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

81. Скрыто модератором  +/
Сообщение от Аноним (-), 30-Окт-24, 18:09 
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

87. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +2 +/
Сообщение от Анониматор (?), 30-Окт-24, 20:02 
можно долго не перечислять софт по работе. На веланде не работает ни один удаленный дестктоп типа Anydesk и TeamViwer. Есть Rustdesk, но пока экспериментально и валится
Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

97. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –2 +/
Сообщение от Аноним (97), 30-Окт-24, 23:02 
> можно долго не перечислять софт по работе. На веланде не работает ни
> один удаленный дестктоп типа Anydesk и TeamViwer. Есть Rustdesk, но пока
> экспериментально и валится

Тем хуже для Anydesk или TeamViewer'а. Уж второй если помрет - мало кто из линуксоидов плакать будет.

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

39. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –2 +/
Сообщение от Аноним (39), 30-Окт-24, 09:30 
> И таких багов в том дидовом омнокоде не известно никому

Но в новлсти написано о баге в одной конкретной реализации исков.

А количество композиторов Вайленда перевалило за 20, и многие из них написаны на дидовой сишочке. Вот и подумай, где в итоге будет больше багов.

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

44. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 10:38 
> Но в новлсти написано о баге в одной конкретной реализации исков.

Единственной распространенной. Считай монополия.

> А количество композиторов Вайленда перевалило за 20, и многие из них написаны на дидовой сишочке.

К сожалению пока нет закона, запрещающего использовать устаревшие инструменты.
Как и закона про ответственность программеров за свой код.

> Вот и подумай, где в итоге будет больше багов.

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

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

51. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (50), 30-Окт-24, 11:23 
Забавно, почему айбиэм до сих пор пилит этот вяленый десять лет, и им невозможно пользоваться.
Ответить | Правка | Наверх | Cообщить модератору

55. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от Аноним (-), 30-Окт-24, 11:47 
С чего это "не возможно"?
Использую вейланд последние года два и проблем только со старым хламом, которые ленивые опы не хотят обновлять до современных технологий.
И проблема такого луддизма заключается как в лени самих разрабов, так и в глупости шапки, которая тянула с дропом иксов настолько долго. Потому что всем известно, что разраб птица гордая, пока не пнешь - не полетит.

А вот как только объявили, что всё - иксы дропают - так сразу все зашевелились.
Даже всякие васяно-ДЕ вроде крысы и корицы начали двигаться в сторону поддержки вейланда. Хотя думаю они не смогут.

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

76. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от randomize (?), 30-Окт-24, 17:24 

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

1) раз старым хламом пользуются, значит, он устраивает; 2) если есть пользователи, то должна оставаться поддержка; 3) все, что надо знать о вяленых фанатиках - культ потре&лятства и нового ради нового.

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

78. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 17:38 
> 1) раз старым хламом пользуются, значит, он устраивает

согласен

> 2) если есть пользователи, то должна оставаться поддержка;

Да неужели?) Кому должна? Разве хоть что-то кому-то что-то должен?))
Это же опенсорс - вот сами берете и поддерживаете.

> 3) все, что надо знать о вяленых фанатиках - культ потре&лятства и нового ради нового.

Все что нужно знать о фанатах иксов "диды в дерьме жили и мы будем! главное ничего не менять! а то вдруг у какого-то 6омжа с третим пнем работать перестанет!! дepьмо нужно тянуть вечно, вы абязаны!!1111"

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

88. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от randomize (?), 30-Окт-24, 20:42 

> Да неужели?) Кому должна? Разве хоть что-то кому-то что-то должен?))
> Это же опенсорс - вот сами

Еще раз. Раз пока есть пользователи, то пока есть и поддержка. Мало кто будет собирать кастомное ядро или патчи специально для себя писать. Достаточно не ломать просто. Да, я знаю, иногда просто "оставить как есть" не получится, но ломание гнома и вяленых композиторов иногда происходит по принципу "когда коту нечего делать".
> Все что нужно знать о фанатах иксов "диды в дерьме жили и
> мы будем!

Ага, ща впихнем всем в глотку вяленд и как заживем. А то диды жить мешают.
> 6омжа с третим пнем работать перестанет!!

Сегрегация пользователей, насильное пропихивание своих технологий. Что еще можно ожидать от фанатиков. А в ответ на сообщения о багах - УМВР, не нужно, вы неправильно этим пользуетесь.

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

98. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 23:04 
> Еще раз. Раз пока есть пользователи, то пока есть и поддержка.

Хахаха, нет дорогой, оно так не работает.
За поддержкой иди к корпам или плати денежку.
А опенсорс это "я написал код, я им поделился"
Но у меня нет никаких обязанностей: ни принимать pull request'ы, ни реализовывать фичи, ни осуществлять вообще какую-то поддержку.

> Мало кто будет собирать кастомное ядро или патчи специально для себя писать.

Очень жаль)

> Достаточно не ломать просто.

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

> Да, я знаю, иногда просто "оставить как есть" не получится,

Именно поэтому начали выкидывать ХОрг - тк никто не хотел в нем ковыряться.

> но ломание гнома и вяленых композиторов иногда происходит по принципу "когда коту нечего делать".

И это их полное право.

> Ага, ща впихнем всем в глотку вяленд и как заживем. А то диды жить мешают.

Так сиди на ХОрге - сам фикси баги, сам осуществляй поддержку.
Ты на меня наезжаешь, а сам, по сути, та самая потербялдь, которая делать ничего не хочет, а только вопит что все ему должны.

> Сегрегация пользователей, насильное пропихивание своих технологий.

Хахахахахаха! Давай поплачь, что 16 битные процы дропнули.
А по поводу насильного пропихивания - patches are welcome.
Вам нужны иксы? Поддерживайте сами!

> А в ответ на сообщения о багах - УМВР, не нужно, вы неправильно этим пользуетесь.

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


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

123. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от randomize (?), 31-Окт-24, 15:45 

> За поддержкой иди к корпам или плати денежку.
> Т.к они делают для себя, а вам просто дали возможность попользоваться.

Интересная логика. Гном делается за бабки, большинство коммитов Linux - от корпов, но при этом "просто дали попользоваться".

Что касается твоих личных нападок, то где я писал, что мне кто-то что-то должен? То, что старое оборудование должно поддерживаться, это не значит, что разработчик лично мне обязан. Просто без поддержки нужных вещей программа лишится части пользователей. Так что давай, вперед, выпиливай "ненужные" иксы и особенно XWayland. Я только за 😊

> Да, вы пользуетесь не так

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

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

124. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 31-Окт-24, 16:28 
> Интересная логика. Гном делается за бабки, большинство коммитов Linux - от корпов,
> но при этом "просто дали попользоваться".

Именно так.
Просто если ты придешь, например к красношапке и спросишь "а кто ваши пользователи", то они расскажут тебе про крупные компании которые перешли на линукс, а именно на "Red Hat Enterprise Linux for Workstations".

Можешь сам убедиться
redhat.com/en/technologies/linux-platforms/enterprise-linux/workstations
Volkswagen migrated from UNIX to Red Hat Enterprise Linux for Workstations to simplify its operating system (OS) management for its research and development (R&D) engineers.

Так что для своих пользователей они делают фичи, а остальным позволяют пользоваться.

> Что касается твоих личных нападок, то где я писал, что мне кто-то что-то должен?

Хм.. если ты это так воспринял - то извини.
Мои рассуждения были скорее риторические.

> То, что старое оборудование должно поддерживаться, это не значит, что разработчик лично мне обязан.

Так оно и не должно)
Ну нет у разработчика обязанности поддерживать старье (если это отдельно не предусмотрено контрактом)

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

И если создателя программы это устраивает - то все хорошо.

>Так что давай, вперед, выпиливай "ненужные" иксы и особенно XWayland. Я только за 😊

Из новости про релиз Федоры
"Пакеты, относящиеся к xorg-server, стали опциональными, по умолчанию не ставятся. Это можно считать признаком движения к полному отказу от X11 вообще."

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

Андроид и Хром показывает, что на открытый тоже.
Особенно если это опенсорс, который ментенить и развивать очень сложно.


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

130. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от randomize (?), 31-Окт-24, 21:21 
> И если создателя программы это устраивает - то все хорошо.

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

> Из новости про релиз Федоры
> "Пакеты, относящиеся к xorg-server, стали опциональными, по умолчанию не ставятся.

Я в курсе. Проблема в том, что реализации Wayland кажутся еще сырыми, и не мне одному. Если бы переход с иксов был максимально бесшовным и безболезненным, а разработчиком пришлось бы перерисывать минимум кода (а не как сейчас), то вообще никакого флейма не было бы, и про иксы уже давно забыли. Ну а Федора - это известный глюкодром (ну или тестовый полигон, если такое обидно) для обкатки разработок Red Hat/IBM, лучше не использовать ее в реальной жизни.

> Андроид и Хром показывает, что на открытый тоже.

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

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

141. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 01-Ноя-24, 12:25 
> Опять же, если у проги большой рынок, то, скорее всего, разрабы сидят на зарплате. А в таком случае им вообще может быть фиолетово.

Так почти все успешные программы - это разрабы на зарплате.
Что ядро линукс, что блендер и тд.
Есть пару исключений типа vim, на то они и исключения (и при этом сливает по аудитории VS-коду).

> Я в курсе. Проблема в том, что реализации Wayland кажутся еще сырыми, и не мне одному.

Если оно не соответствует твоим ожиданиям, то можешь продолжать сидеть на ХОрге и поддерживать его сам.

> Если бы переход с иксов был максимально бесшовным и безболезненным,

Не будет) Это невозможно просто архитектурно.

> а разработчиком пришлось бы перерисывать минимум кода (а не как сейчас),

Ты сам знаешь что это не возможно.
Слишком много изменилось, ИМХО это даже круче чем смена 16 на 32 бита.

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

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

> лучше не использовать ее в реальной жизни.

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

> то какие свистелки, которые хотят пользователи, остались без внимания?

Дублирование приложений, Secure Folder, хаптик, мне был бы интересен аналог Samsung Dex.
Они реализованы в версиях вендоров (типа хаоми или самсунг), но в ванильном нету.

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

Это значит что веб-аппа будет запускаться на любой архитектуре, на любой конфигурации где есть свежий браузер.
Почти как java 20+ лет назад)

В теме про webassembly много спорили на эту тему.


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

99. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 23:07 
> 1) раз старым хламом пользуются, значит, он устраивает; 2) если есть пользователи,
> то должна оставаться поддержка;

В этом мире никто никому ничего не должен. И если вам нужна поддержка, ОБАНА, в опенсорсе в моде - self service. Значит вы идете и - поддерживаете то что ВАМ нужно САМИ. Как тебе такое Элон Маск?!

> 3) все, что надо знать о вяленых фанатиках - культ потре&лятства и нового ради нового.

Не, это - желание нормальной графической системы. Которая не ловит якорь от открытия менюшки или одной runaway задачи, не падает всей толпой оптом от GPU recovery, не тормозит и тирингует на отображении видео и анимаций, и не таскает 100500 легаси кода всякой отрисовки контролов и фонтов, которые страшны как смерть - так что это уже никто не использует, но код в результате такой - что посетивших его мучают ночные кошмары.

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

11. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 30-Окт-24, 02:07 
>Из-за ошибки при выставлении нового размера, изменение меняло только значение num_si, но оставляло неизменным значение size_si.

почему разаботчики брезгают макросами для такого вида приколов?
некоторые даже ``free(ptr); ptr=NULL;`` делают руками. а потом получают уязвимости вида "мы в Х строке забыли занулить и получили UB в другом конце программы".
изучила немного вопрос. вроде, ничего плохого в макросах нет.
даже сложные конструкции и ветвления туда без проблем запихиваются через
```
#define Macro() \
  do { \
    <...> \
  } while(0)
```
do и while можно в доп. макросы завернуть, улучшив читаемость:
```
#define Macro() \
  MacroContextBegin() \
    <...> \
  MacroContextEnd()
```
или функции инлайновые почему не использовать? зачем это руками делают, понять не могу?

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

12. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 30-Окт-24, 02:11 
вот фикс даже: https://gitlab.freedesktop.org/xorg/xserver/-/commit/85b7765...

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

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

14. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +9 +/
Сообщение от Аноним (14), 30-Окт-24, 02:18 
Не понимаешь потому что видимо не пишешь ничего полезного. У тебя все указатели только в функции main(), что ты их можешь макросами занулять?
Ну сделаешь ты макрос, который вызывает free(), а затем присваивает NULL, только вот NULL присвоится локальному указателю внутри функции, а в вызывающе функции будет висячий указатель и никакой макрос тут не поможет
Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

16. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –3 +/
Сообщение от мявemail (?), 30-Окт-24, 02:26 
"поможет ``free(ptr); ptr=NULL``, но не поможет ``#define Free(ptr) free(ptr);ptr=NULL``" ?
по-моему, Вы пишете, не думая.
Ответить | Правка | Наверх | Cообщить модератору

19. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –3 +/
Сообщение от мявemail (?), 30-Окт-24, 02:37 
Using macros for auto-assigning NULL after freeing a pointer is a common practice in C and C++ programming to help prevent dangling pointer issues.

на stackoverflow то же самое говорят.
Вы - тролль.

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

27. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от Аноним (27), 30-Окт-24, 04:19 
На stackoverflow много ерунды.

На самом деле, собирать с -fsanitize=address уже довольно неплохо, но, опять же, зачастую проблема в библиотеке, а не в собственном коде.

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

101. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 23:10 
> На stackoverflow много ерунды.
> На самом деле, собирать с -fsanitize=address уже довольно неплохо, но, опять же,
> зачастую проблема в библиотеке, а не в собственном коде.

sanitize=address довольно жестко тормозит - и RAM жрет на трекинг использования, так что вы получите нечто типа дотнета или явы из сишки. Ну и радости с него такого? Вот ubsan - довольно легкий бывает, но и ловит не все.

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

33. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +7 +/
Сообщение от Аноним (33), 30-Окт-24, 08:16 
> Вы - тролль.

За словами следи, тролль. И прежде, чем лезть в stackoverflow и что-то тут комментировать, следует сначала разобраться в предметной области.

#include <stdio.h>
#include <stdlib.h>

#define FREE(ptr) do { \
        free(ptr); ptr = NULL; } while(0)

void f(int *ptr)
{
        FREE(ptr);
}

int main(void)
{
        int *p = malloc(sizeof(int));

        f(p);

        printf("%p\n", p);

        return 0;
}

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

23. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +3 +/
Сообщение от Аноним (23), 30-Окт-24, 03:06 
> "поможет ``free(ptr); ptr=NULL``, но не поможет ``#define Free(ptr) free(ptr);ptr=NULL``"
> ?

Поможет от чего именно? "в другом конце программы" так и останется предыдущее значение ptr. Или вообще, указатель на кусок освобожденной памяти (*ptr+сдвиг)...

Все эти "новомодные" RAII, smart-pointers, владения и времена жизни в "молодежных" ЯП-ах (как кучи ЯП с автоматической сборкой мусора) не от переизбытка смузи или неосиляния free(ptr);ptr=NULL придумали.

> по-моему, Вы пишете, не думая.

По-моему, кто-то хелловордщик.

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

29. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от Аноним (29), 30-Окт-24, 07:50 
std::shared_ptr не благодарите
Ответить | Правка | Наверх | Cообщить модератору

31. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от Аноним (31), 30-Окт-24, 08:12 
std::unique_ptr сейчас
Ответить | Правка | Наверх | Cообщить модератору

52. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (52), 30-Окт-24, 11:29 
это два разных указателя, первый со счетчиком ссылок и множественным владением, второй - допускает только одно владение
Ответить | Правка | Наверх | Cообщить модератору

102. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 23:13 
> это два разных указателя, первый со счетчиком ссылок и множественным владением, второй
> - допускает только одно владение

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

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

103. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (23), 30-Окт-24, 23:50 
> Отсутствие этого знания в сях порой вообще несколько портит некоторые аспекты. Скажем,
> некоторые оптимизации не знают - как доступаются к объекту. Скажем можно
> было бы сфолдить несколько констант в одну при идентичности.

Ну, как бы, есть restrict, да. Но ... все "гарантии" и проверки тут опять таки - на самом п(о)громмисте.

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

104. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 31-Окт-24, 00:06 
> Ну, как бы, есть restrict, да. Но ... все "гарантии" и проверки
> тут опять таки - на самом п(о)громмисте.

Есть и более радикальные ключи компилера позволяющие мерж констант - с пониманием что это noncompliant формально. Так rodata - меньше, но какой-то экзотичный код уповавший на вон то имеет право отъехать.

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

105. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (23), 31-Окт-24, 00:09 
>> smart-pointers,
> std::shared_ptr не благодарите

Не благодарю (тем более за "сборщик мусора для бедных" из питоно-свифтов) 😉

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

113. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от Аноним (113), 31-Окт-24, 11:08 
> за "сборщик мусора для бедных" из питоно-свифтов

Умные указатели не имеют ничего общего со сборщиком мусора.

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

115. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от Аноним (23), 31-Окт-24, 12:38 
>> за "сборщик мусора для бедных" из питоно-свифтов
> Умные указатели не имеют ничего общего со сборщиком мусора.

Но только после пиар-компании маркетолугов и фанбоев ябла, с их "инновационным" ARC в свифте, который "не GC!!1"

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

https://github.com/gcc-mirror/gcc/blob/1f7b1c555c66cf55f9032...
и "опровергнуть" (ну, попытаться).

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

119. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (113), 31-Окт-24, 14:57 
> А до этого, подсчет ссылок считался одной из разновидностей GC.

Нет, никогда не считался. А в unique_ptr счетчика ссылок и вовсе нет.

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

122. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (23), 31-Окт-24, 15:18 
>> А до этого, подсчет ссылок считался одной из разновидностей GC.
> Нет, никогда не считался.

У "альтернативных", в их альтернативной вселенной с альтернативно-маркетолухоичной.
терминологией - все может быть.

https://www.cl.cam.ac.uk/~nk480/C1819/lecture7.pdf
https://cplusplus.com/reference/memory/shared_ptr/
> Manages the storage of a pointer, providing a limited garbage-collection facility,

---
>>> smart-pointers,
>> std::shared_ptr не благодарите
> А в unique_ptr счетчика ссылок и вовсе нет.

Начались виляния. Уныло.


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

138. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 01-Ноя-24, 11:03 
> в unique_ptr счетчика ссылок и вовсе нет.

0 или 1 -- вполне счётчик.

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

108. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 31-Окт-24, 04:54 
теперь дошло, что сказать хотели, спасибо.
но изначально вопрос был в принципе об использовании макросов для обобщения монотонный действий. а не об "офигенном способе зануленич указателей".
по-моему, это только ivan понял
Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

35. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +4 +/
Сообщение от Аноним (33), 30-Окт-24, 08:48 
Объясняю для тупых: если ты объявил указатель, аллоцировал ему память, а потом очистил память и всё это в одной функции, то тогда всё ок. Но если программа сложнее хеллоуврота, то объявляется указатель, аллоцируется память, используется указатель и очищается память обычно в разных функциях. И с этим есть проблема, потому что указатель это самая обычная переменная, просто вместо значения он содержит адрес. Когда ты передаешь указатель в функцию, внутри функции создается КОПИЯ указателя, в которую копируется значение передаваемого указателя, всё как с обычными переменными. Меняя значение такого указателя внутри вызываемой не влияет на указатель в передаваемой функции. Всё как у обычных переменных, чем собственно указатель и является
Ответить | Правка | К родителю #16 | Наверх | Cообщить модератору

77. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Ivan_83 (ok), 30-Окт-24, 17:29 
Технически никто не мешает передавать указатель на указатель и тогда можно будет занулять и вызывающая функция не останется с невалидным указателем.

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

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

84. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (84), 30-Окт-24, 18:55 
> Технически никто не мешает передавать указатель на указатель и тогда можно будет занулять и вызывающая функция не останется с невалидным указателем.

Технически мешает тот факт, что объект уже освобожден из памяти. Ты же не будешь после free(ptr) держать эту самую переменную ptr, чтобы указатель-на-ptr все еще мог на нее указывать?

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

93. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Ivan_83 (ok), 30-Окт-24, 22:22 
То что я описал это способ в С коде без лишних языковых конструкций и отдельных языков получить аналог std::*_ptr от крестов.
Да, не идеальный, тк теперь у нас не сама память от объекта может быть внезаптно освобождена а может быть освобождена память где хранится указатель на объект.

В целом это иногда удобно когда вызывающая функция может освободить память, но того же самого можно добится проверяя код возврата или договорившись что вызывающая функция дальше владеет объектом и отвечает за его освобождение.
Бывают и сложные ситуации когда реально нужен подсчёт рефов и только при нуле удаление, но я лично стараюсь такого избегать архитектурно.

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

95. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (95), 30-Окт-24, 22:40 
> То что я описал это способ в С коде без лишних языковых конструкций и отдельных языков получить аналог std::*_ptr от крестов.

То, что вы описали, даже приблизительно не является аналогом std::*_ptr из C++. А получите вы от этого решения только еще больше геморроя на пустом месте, ибо изначальную проблему оно вообще не решает, но еще и добавляет новую.

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

109. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –2 +/
Сообщение от мявemail (?), 31-Окт-24, 05:16 
а не проще, кстати, заменить стандартные функции на свои с механихмом подсчета референсов?
```
void fn1(char *point){
  free(point); // понизит до 1, не очистит
}
#define fn1(point) fn1(ref(point))

int main(){
  char *str = malloc(sizeof(char*)); # создаст мутекс, счетчик и вернет аллоцированную память
  str = "hi";
  
  fn1(point); // повысит уровень ссылки до 2

  printf("%s\n", str) // все ок

  free(str) // очистит
}
```
это так, концепция, вчера буквально написала.
осталось поудобнее все это сделать проблема сгинет, вроде.

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

114. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +3 +/
Сообщение от Аноним (33), 31-Окт-24, 12:30 
Хоспади, да хватит уже позориться.

P.S.
> char *str = malloc(sizeof(char*)); # создаст мутекс, счетчик и вернет аллоцированную память
> str = "hi";

У тебя утечка памяти, инноваторша

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

133. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от мявemail (?), 01-Ноя-24, 00:04 
в коде ошиблась - ну все, позор на всю жизнь, лол.
```
TableNewExten(h);

int main(){
  str1="123";
  str2="456";

  char *out;
  void *outCtl

  strUnite(out, str1, str2) // memAlloc
  
  TableInitExtern(h);
  TableAdd(h, "key", refLend(outCtl, out))

  printf("%s:%s", out, TableGet(h, char*, "key"));

  memFree(out); // уровень 1
  TableFree(h);

  refBorrow(outCtl) { // уровкнь 0
    memFree(outCtl) // free()
  }
}

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

49. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от n00by (ok), 30-Окт-24, 11:08 
> "поможет ``free(ptr); ptr=NULL``, но не поможет ``#define Free(ptr) free(ptr);ptr=NULL``"
> ?
> по-моему, Вы пишете, не думая.

В данном частном случае, может быть, поможет.

В общем случае придётся делать что-то вроде

#define Free_S(pptr) free(*pptr);*pptr=NULL

и соответственно в остальных местах работать с лишней косвенностью, что убьёт смысл использовать Си.

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

107. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 31-Окт-24, 04:49 
смысл не убьет - компилятор с99 в каждой микроволновке, ибo POSIX.
по-моему, его в основном используют там, где нужна порьабельность.
но вообще, я немного о другом говорила.
вопрос был о том, зачем писать дважды, если можно один раз, в общем случае, не о конкретике.
Ответить | Правка | Наверх | Cообщить модератору

116. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 31-Окт-24, 12:44 
> смысл не убьет - компилятор с99 в каждой микроволновке, ибo POSIX.
> по-моему, его в основном используют там, где нужна порьабельность.

Например, Vala транслируется в Си. Оно прикручено болтами к GLib (не путать с glibc), но можно открутить, автоматическое управление памятью на подсчёте ссылок останется. Можно ещё что-то транслировать, вплоть до Рефала. Если производительность не играет роли.

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

Макросы не очень любят, поскольку подчас всплывают неожиданности. Вот классический пример ошибки из букваря (описано в книге Алена Голуба "Верёвка достаточной длины..."), с которым ничего не могут поделать https://bugzilla.altlinux.org/show_bug.cgi?id=38212#c2 потому что придётся всю GNU C Library выкидывать.

Страуструп даже отдельный препроцессор придумал вместо макросов - CFront.

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

132. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от мявemail (?), 31-Окт-24, 23:53 
не знаю, что за Рефал, а Vala, во-первых, не ясно, на кукую версию стандарта метит, во-вторых, gnu-расширения использует.
изначально на ней писать хотела
Ответить | Правка | Наверх | Cообщить модератору

136. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от Аноним (33), 01-Ноя-24, 01:15 
> gnu-расширения использует

Уж лучше GNU-расширения, чем твои уродские костыли

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

137. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 01-Ноя-24, 10:55 
Рефал это просто пример, что транслировать в Си можно почти что угодно. Изначально препроцессор Си был отдельной программой -- намёк, что если не хватает макросов, то можно написать свой препроцессор. Что сделали в Vala и прочих ЯП.
Ответить | Правка | К родителю #132 | Наверх | Cообщить модератору

134. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от мявemail (?), 01-Ноя-24, 00:11 
почему, кстати, с лишней косвенностью?
сейчас посмотрела - у меня так и происходило.
```
void mmeFree(void **point){
  if(point==NULL||*point=NULL){...}
  free(*point);
  *point=NULL;
}
```
```
<...>
memFree(&point);
<...>
```
потом просто на NULL значения проверяете и все
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

139. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 01-Ноя-24, 11:13 
>[оверквотинг удален]
>   free(*point);
>   *point=NULL;
> }
> ```
> ```
> <...>
> memFree(&point);
> <...>
> ```
> потом просто на NULL значения проверяете и все

В #11 не вижу этой лишней косвенности, только ``free(ptr); ptr=NULL;``

Лишняя - потому что лишние операции, лишние инструкции в машинном коде. Если такая цена устраивает, то вопросов нет. Часть лишнего оптимизатор может быть даже выкинет, если не передавать такие указатели между модулями (so, dll).

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

142. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от мявemail (?), 03-Ноя-24, 13:19 
вот при таком раскладе проявляются проблемы:
```
int main(){
    TableInitExtern(htb);

    char *str1 = "123";
    char *str2 = "456";
    char *str3 = "789";

    char *out;
    
    eAPIStrUnite(out, str1, str2, str3);
    
    TableAdd(htb, "Key", out);
        
    printf("%s\n", out);
    eAPIMemPointFree(out);

    char *Data = TableGet(htb, char*, "Key");
    printf("%s\n", Data); // обращение к NULL

    TableFree(htb);

}
```
сделала вот так в конечном итоге:
```
int main(){

    TableInitExtern(htb);

    char *str1 = "123";
    char *str2 = "456";
    char *str3 = "789";

    char *out;
    refctl outCtl;
    
    eAPIStrUnite(out, str1, str2, str3);
    
    TableAdd(htb, "Key", refLend(outCtl, out));
        
    printf("%s\n", out);
    memFree(out); // не очищает: 0 юзеров, 1 аренда

    char *Data = ref(TableGet(htb, char*, "Key"));
    printf("%s\n", Data);
    memFree(Data); // не очищает: 0 юзеров, 1 аренда

    TableFree(htb);
    refBorrow(outCtl); // очищает
}
```

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

143. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 05-Ноя-24, 10:32 
>  char *str1 = "123";
>  char *str2 = "456";
>  char *str3 = "789";
>  char *out;

А зачем вообще нужны голые указатели?

Вот эти массивы char -- в примере появились для наглядности -- в рабочей программе они откуда-то взялись? И при этом была подсчитана их длина, наверняка и память под них выделена?

> eAPIStrUnite(out, str1, str2, str3);

Например, если "строки" хранить в странном на первый взгляд формате - в двусвязном списке char - может оказаться, что слияние выполняется без лишних копирований и вопрос с управлением памятью отпадает сам собой.

> TableAdd(htb, "Key", out);

Шаблонная функция в Си++ потребовала бы вместо указателя итератора (а по списку он или по массиву - зависит от специализации). В Си для списка придётся написать отдельную, но вряд ли в ней итерация по списку это основная сложность.

Список - просто как пример неочевидного решения, в каких-то частных случаях оправданного. Здесь может быть проще инкапсулировать указатель и счётчик в struct string?

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

146. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (146), 06-Ноя-24, 11:47 
>>  char *str1 = "123";
>>  char *str2 = "456";
>>  char *str3 = "789";
>>  char *out;
> А зачем вообще нужны голые указатели?

Я таки нашел 1 применение похожей конструкции. Можно написать например
...
return "OK";

...и номер в принципе катит. Актуально для всяких "err2str" самопальных. Конечно оно return по факту - указатель на строку "OK", си ж не умеет строку by value возвращать вот так в лобову. Да и не в лобовую - лучше не надо.

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

147. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 07-Ноя-24, 11:33 
>[оверквотинг удален]
>>>  char *str3 = "789";
>>>  char *out;
>> А зачем вообще нужны голые указатели?
> Я таки нашел 1 применение похожей конструкции. Можно написать например
> ...
> return "OK";
> ...и номер в принципе катит. Актуально для всяких "err2str" самопальных. Конечно оно
> return по факту - указатель на строку "OK", си ж не
> умеет строку by value возвращать вот так в лобову. Да и
> не в лобовую - лучше не надо.

В каких-то частных случаях без голых указателей на массивы символов не обойтись, но в общем случае от них больше проблем, чем пользы.

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

144. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 06-Ноя-24, 11:22 
>  eAPIStrUnite(out, str1, str2, str3);
>  TableAdd(htb, "Key", out);
>  printf("%s\n", out);
>  eAPIMemPointFree(out);
>  char *Data = TableGet(htb, char*, "Key");
>  printf("%s\n", Data); // обращение к NULL

В догонку к "двусвязному списку для хранения"... Если TableAdd() и TableGet() внутри содержат некий перфект хеш, то замена хештаблицы на префиксное дерево позволит убрать операцию слияния подстрок для формирования ключа, вместо этого искать-добавлять непосредственно по подстрокам ключа. Сами строки-подстроки при этом хранятся в дереве. Для передачи в printf придётся их скопировать в массив char, но в простейшем случае хватит локальной копии (в стеке). Почему "значение" следует объединять из подстрок перед добавлением в таблицу - тоже неочевидно. Может быть, проще его менять?

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

75. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –3 +/
Сообщение от Ivan_83 (ok), 30-Окт-24, 17:21 
Потому что синтаксический сахар вызывает передоз.

Посмотрите на gobject для примера или ещё какой проект где активно юзаеются макросы.
Да даже без макросов многие либы навязывают архитектуру и дизайн приложения.

Когда пишешь на С есть желание оставатся в рамках общепринятого и понятного синтаксиса, а так то конечно легко обернуть каждую функцию в свои функции или макросы а потом получившийся код будет как лапшка на крестах - сплошной местячковый диалект на полтора анонима, притом автор и сам через год не вспомнит что у него была какаянить safe_free() и напишет ещё одну free_safe() в другом файле.

По крайней мере я через это проходил в оба конца, и видел как целые компании пошли по пути написания обёрток и абстракций для всего подряд, получив в итоге вместо кода полное сектанство.
Да, они даже malloc(), free(), str*() и прочее обернули или сами реализовали, и учитывая что я эту шизу проходил это был NIH синдром под лозунгом "зато наш код на любой платформе одинаково плох" :)

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

83. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (84), 30-Окт-24, 18:47 
> как лапшка на крестах - сплошной местячковый диалект на полтора анонима

Лол. В крестах с его RAII таких глупых проблем в принципе нет.

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

106. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 31-Окт-24, 00:58 
>> как лапшка на крестах - сплошной местячковый диалект на полтора анонима
> Лол. В крестах с его RAII таких глупых проблем в принципе нет.

Да уж. Там другие проблемы. В частности - что каждый плюсер хреначит на своем собственном субдиалекте C++. На фоне вон этого, вон то - такие мелочи, право.

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

118. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от n00by (ok), 31-Окт-24, 13:08 
Да. Решить все остальные проблемы плюсов можно как Линус Торвальдс: назвать всех плюсовиков нехорошим словом. После дружеского мордобоя работать с теми, кто останется.
Ответить | Правка | К родителю #83 | Наверх | Cообщить модератору

110. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 31-Окт-24, 05:24 
>Да даже без макросов многие либы навязывают архитектуру и дизайн приложения.

хм.. ну, может это не нравится кому-то, действительно.
хотя, мне кажется, это наоборот хорошо.

>притом автор и сам через год не вспомнит

вот локальность - да, может быть проблемой. но можно ж кратко все функции в .md файлах документировать. тем более, есть удобные инструменты для генерации манов.
через год просто
man MyAPI (видишь раздел "Mem")
man MyAPI.Mem, где для каждой функции расписано, какие коды отлавливать надо, когда паника и т.п.

>они даже malloc(), free(), str*() и прочее обернули

так же сделала. а чем плохо это?
штатные реализации можно отключить:
```
#define malloc myAPIPanic("malloc() is blocked, use MemAlloc instend!""
```
,так что ебезопасный вариант не влепишь.

>

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

111. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –1 +/
Сообщение от мявemail (?), 31-Окт-24, 05:27 
случайно "отправить" нажала.
>это был NIH синдром под лозунгом "зато наш код на любой платформе одинаково плох" :)

почему плох обязательно? и почему nih-синдром?
можно ж обернуть некоторые функции и полностью забыть об определенном классе проблем.
заодно и решить проблемы с поддержкой тех же Окон, перенеся все #define'ы в либу и получив на выходе простой, читаемый код.
это ж хорошо наоборот

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

117. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от n00by (ok), 31-Окт-24, 13:01 
nih-синдром -- это такая мантра, что бы люди разучились кодить. Этим синдромом "больны" все влиятельные корпорации: Микрософт, Гугл, даже GNU и то -- is Not UNIX. :)
Ответить | Правка | Наверх | Cообщить модератору

127. Скрыто модератором  +/
Сообщение от Аноним (33), 31-Окт-24, 17:10 
Ответить | Правка | К родителю #110 | Наверх | Cообщить модератору

128. Скрыто модератором  +/
Сообщение от Аноним (33), 31-Окт-24, 17:17 
Ответить | Правка | Наверх | Cообщить модератору

131. Скрыто модератором  +/
Сообщение от мявemail (?), 31-Окт-24, 23:47 
Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

135. Скрыто модератором  +/
Сообщение от Аноним (33), 01-Ноя-24, 01:13 
Ответить | Правка | Наверх | Cообщить модератору

140. Скрыто модератором  +/
Сообщение от n00by (ok), 01-Ноя-24, 11:26 
Ответить | Правка | Наверх | Cообщить модератору

145. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (146), 06-Ноя-24, 11:43 
>>Да даже без макросов многие либы навязывают архитектуру и дизайн приложения.
> хм.. ну, может это не нравится кому-то, действительно.
> хотя, мне кажется, это наоборот хорошо.

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

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

100. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 23:08 
>[оверквотинг удален]
>     <...> \
>   } while(0)
> ```
> do и while можно в доп. макросы завернуть, улучшив читаемость:
> ```
> #define Macro() \
>   MacroContextBegin() \
>     <...> \
>   MacroContextEnd()
> ```

Фига у некоторых понятия о улучшении читаемости. Теперь всем кто видит это впервые неплохо бы RTFMнуть что есть MacroContextBegin/End и к каким особенностям сие ведет. Ибо изначально имплементация не очевидна. Что для системного яп - такая себе радость. Одно из требований в случае например safety critical типа MISRA это использование стандартного синтаксиса, без хаков. Чтобы другие програмеры не трактовали энный код неверно и не вкатили багов на этой почве.

А если этот аспект пофиг - так никто и не будет читать Macro(). На самом деле это все далеко не главная трабла севых макросов.

> или функции инлайновые почему не использовать? зачем это руками делают, понять не могу?

Инлайновые функции хороши до известного предела.

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

112. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от мявemail (?), 31-Окт-24, 05:34 
>Ибо изначально имплементация не очевидна

так это ж плюс, нет?
вместо того, что б голову себе морочить реализаций - понятный
ContextBegin().
или MacroSaveContext() и MacroEndSaveContext(), условно.

>Что для системного яп - такая себе радость.

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

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

129. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от Аноним (129), 31-Окт-24, 17:32 
> вместо того, что б голову себе морочить реализаций -

Вон то это стандартный паттерн для сишников. В отличие от...

> понятный ContextBegin().

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

> или MacroSaveContext() и MacroEndSaveContext(), условно.

Это вообще вопиющая дезинформация. Потому что никаких контекстов оно никуда не сэйвит. А облом ожиданий прогармера и дезинформация - чреваты совершенно дурными багами на ровном месте.

Это не значит что совсем не надо юзать макросы, в мане gcc, по моему, пример как достаточно прикольно и красиво инициализировать что-нибудь этакое, типа array struct'ов, в элегантном виде. Для себя я даже его расширил подобными вещами дабы точно не забыть терминатор (struct с специальными значениями) в хвосте по которому парсеры определяют (при заранее неизвестном размере) что все, пора угомониться. Но это task specific штука, под заведение нескольких однотипных "объектов" которые всяко были довольно кастомными штуками, и парсер свой.

>>Что для системного яп - такая себе радость.
> почему? вон, в C#, java и тд построение абстракций и скрытие реализации
> - это вообще поощряемое дело. что и правильно, как мне кажется.

Теперь попробуйте на этом системный софт, бутлоадеры, фирмвари, ядра и все такое писать. Поймете в чем прикол. Когда от системы надо предсказуемость поведения - а вы понятия не имеете как компонент себя ведет, какие особенности и проч - это не фича.

> зачем это в голове держать, опять же? тем более, что многие
> редакторы позволяют по 1й кнопке прыгнуть к реализации.

Вон то стандартный прием в си. Если специальных соображени нет - вам реализация пофиг. А если реализация не пофиг то нестандартные плюхи в ней заставят читать еще и реализацию этих плюх, и вместо 1 штуки - теперь читаем 3! Т.е. провалившись в реализацию, еще обклацываем 2 под-реализации воооон того. И это типа улучшение? :)

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

30. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (29), 30-Окт-24, 07:52 
"системах, в которых X-сервер выполняется с правами root, а также для удалённого выполнения кода в конфигурациях, в которых для доступа используется перенаправление сеанса X11 при помощи SSH. "
иными словами ни в одном адекватно настроенном дистрибутиве проблемы нет.
Ответить | Правка | Наверх | Cообщить модератору

32. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (31), 30-Окт-24, 08:15 
Прокинуть X11 через SSH - это, всего-лишь, пожелание пользователя, независимо от дистрибутива.
Ответить | Правка | Наверх | Cообщить модератору

43. Скрыто модератором  –6 +/
Сообщение от Fracta1L (ok), 30-Окт-24, 10:22 
Ответить | Правка | Наверх | Cообщить модератору

54. Скрыто модератором  –3 +/
Сообщение от Аноним (-), 30-Окт-24, 11:40 
Ответить | Правка | Наверх | Cообщить модератору

59. Скрыто модератором  +/
Сообщение от Аноним (59), 30-Окт-24, 12:42 
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

64. Скрыто модератором  +/
Сообщение от Аноним (60), 30-Окт-24, 13:11 
Ответить | Правка | Наверх | Cообщить модератору

96. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 30-Окт-24, 22:56 
Кажется теперь новости про иксы все будут выглядеть примерно так...
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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