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.ru/opennews/art.shtml?num=62136

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

Оглавление

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

55. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от Аноним (-), 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ообщить модератору

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 с устранением уязвимости"  +/
Сообщение от мяв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 с устранением уязвимости"  +/
Сообщение от мявemail (?), 30-Окт-24, 02:11 
вот фикс даже: https://gitlab.freedesktop.org/xorg/xserver/-/commit/85b7765...

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

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

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

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

19. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  –2 +/
Сообщение от мяв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 с устранением уязвимости"  +6 +/
Сообщение от Аноним (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 с устранением уязвимости"  +2 +/
Сообщение от Аноним (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 с устранением уязвимости"  +/
Сообщение от Аноним (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ообщить модератору

35. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +3 +/
Сообщение от Аноним (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ообщить модератору

49. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +/
Сообщение от 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ообщить модератору

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. Скрыто модератором  +/
Сообщение от Аноним (-), 31-Окт-24, 00:58 
Ответить | Правка | Наверх | 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ообщить модератору

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

32. "Обновление X.Org Server 21.1.14 с устранением уязвимости"  +1 +/
Сообщение от Аноним (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
Добавить, Поддержать, Вебмастеру