The OpenNET Project / Index page

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



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

Оглавление

GhostRace - атака на механизм спекулятивного выполнения в процессорах Intel, AMD, ARM и IBM, opennews (?), 13-Мрт-24, (0) [смотреть все]

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


14. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +4 +/
Сообщение от pavlinux (ok), 13-Мрт-24, 12:06 
>  разработчики Xen подготовили изменения

Генитально!!!


/* Free an allocation, and zero the pointer to it. */
-#define XFREE(p) do { \
-    xfree(p);         \
-    (p) = NULL;       \
+#define XFREE(p) do {                       \
+    void *_ptr_ = (p);                      \
+    (p) = NULL;                             \
+    xfree(_ptr_);                           \
} while ( false )

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

20. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +/
Сообщение от Аноним (20), 13-Мрт-24, 12:26 
Разве это не двойное освобождение? Если что, то не программист.
Ответить | Правка | Наверх | Cообщить модератору

37. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +/
Сообщение от Аноним (10), 13-Мрт-24, 13:03 
Нет, просто скопировали адрес указателя в другой указатель и его освободили, а первый занулили
Ответить | Правка | Наверх | Cообщить модератору

42. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +/
Сообщение от Аноним (20), 13-Мрт-24, 13:17 
Предположил, что можно освободить после (p) = NULL, когда указатель уже ни на что не указывает? Что освобождается непонятно что. Опять же, не программист - просто стало интересно, разберусь в этом или нет.
Ответить | Правка | Наверх | Cообщить модератору

46. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +/
Сообщение от Аноним (10), 13-Мрт-24, 13:27 
Согласно стандарту языка C - free(NULL) ничего не делает. Поэтому если макрос выше вызвали так:

void *p = malloc(...);
XFREE(&p);

то после его завершения p == NULL, а если так XFREE(p);, то `p` будет висячий указатель

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

50. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  +1 +/
Сообщение от Аноним (10), 13-Мрт-24, 13:34 
Пардон, это ж не функция, а inline макрос, не будет там висячего указателя
Ответить | Правка | Наверх | Cообщить модератору

82. "GhostRace - атака на механизм спекулятивного выполнения в пр..."  –3 +/
Сообщение от Аноним (82), 13-Мрт-24, 21:52 
>/* Free an allocation, and zero the pointer to it. */
> -#define XFREE(p) do { \
> -    xfree(p);         \
> -    (p) = NULL;       \
> +#define XFREE(p) do {                       \
> +    void *_ptr_ = (p);                      \
> +    (p) = NULL;                             \
> +    xfree(_ptr_);                           \
> } while ( false )

Кошка пробежалась по клавиатуре?

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

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

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




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

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