The OpenNET Project / Index page

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



"Уязвимость в библиотеке Pixman, применяемой для отрисовки во многих открытых проектах"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "Уязвимость в библиотеке Pixman, применяемой для отрисовки во..." +1 +/
Сообщение от Совершенно другой аноним (?), 05-Ноя-22, 23:07 
Почитав по диагонали исходники и пояснения в issue:
- pixman_fixed_t это такой самодельный 32-х разрядный знаковый тип данных с фиксированной запятой на базе обычного целочисленного знакового 32-х разрядного типа. Старшие 16 бит - целая часть со знаком, младшие 16 бит - дробная часть:

typedef int32_t            pixman_fixed_16_16_t;
typedef pixman_fixed_16_16_t    pixman_fixed_t;

- получение целой части производится сдвигом:

#define pixman_fixed_to_int(f)        ((int) ((f) >> 16))

- 32-х разрядное знаковое 0x80000000 это -2147483648, по стандарту сдвиг отрицательного значения является implementation-defined. Для архитектур x86 и x86_64 есть отдельные "знаковые" и "беззнаковые" команды сдвигов. Знаковые "выдвигают" 0, а беззнаковые - значение старшего бита. Так в итоге и получается 0xffff8000, т.е. при сдвиге заполнение произошло "1"-ками из 8-ки.

- возможно более кореектно было-бы сравнить не с константой 0xffff8000, а с INT16_MIN из stdint.h, ещё лучше - завести константу pixman_min_fixed_16_16:

#define pixman_min_fixed_16_16 INT16_MIN
#define pixman_min_fixed pixman_min_fixed_16_16

Правда тут проблемой может стать поддержка Microsoft Visual Studio до версии 2010, а так-же старых _SRV4, _sgi, __sun и прочих _AIX, у которых не известно есть-ли в <inttypes.h> или <sys/inttypes.h> такого рода лимиты.

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

Оглавление
Уязвимость в библиотеке Pixman, применяемой для отрисовки во многих открытых проектах, opennews, 05-Ноя-22, 09:22  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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