В ядре Linux устранена следующая уязвимость: ALSA: Scarlett2: исправлено переполнение буфера при получении конфигурации. Функция Scarlett2_usb_get_config() имеет логическую ошибку в код преобразования порядка байтов, который может вызвать переполнение буфера при счет > 1. Код проверяет `if (size == 2)`, где `size` — общий размер буфера в байт, затем цикл `count` раз, рассматривая каждый элемент как u16 (2 байта). Это приводит к тому, что цикл обращается к байтам `count * 2`, когда буфер только имеет выделенные байты `size`. Исправьте, проверив размер элемента (config_item->size) вместо общий размер буфера. Это гарантирует, что преобразование порядка байтов соответствует фактический тип элемента.
Показать оригинальное описание (английский)
In the Linux kernel, the following vulnerability has been resolved: ALSA: scarlett2: Fix buffer overflow in config retrieval The scarlett2_usb_get_config() function has a logic error in the endianness conversion code that can cause buffer overflows when count > 1. The code checks `if (size == 2)` where `size` is the total buffer size in bytes, then loops `count` times treating each element as u16 (2 bytes). This causes the loop to access `count * 2` bytes when the buffer only has `size` bytes allocated. Fix by checking the element size (config_item->size) instead of the total buffer size. This ensures the endianness conversion matches the actual element type.