
Автономный воспроизводитель для CVE-2026-90781: запись за границу буфера на 1 байт в alsa-lib __snd_ctl_ascii_elem_id_parse() при разборе name= (в кавычках и без кавычек)
Автономный C-репродьюсер для CVE-2026-90781 — записи за границами буфера размером 1 байт в функции __snd_ctl_ascii_elem_id_parse() библиотеки alsa-lib при разборе name= (как в кавычках, так и без них).
В src/control/ctlparse.c (v1.2.16.1 и более ранний development HEAD):
char buf[64];
...
if (size < (int)sizeof(buf)) { // BUG: allows size == 64
*ptr++ = *str;
size++;
}
...
*ptr = '\0'; // writes buf[64] when size == 64
Путь numid= уже был исправлен на sizeof(buf) - 1; два цикла для name= — нет.
gcc -o reproducer reproducer.c
./reproducer
# With AddressSanitizer (recommended to observe the OOB write):
gcc -fsanitize=address -g -o reproducer reproducer.c
./reproducer
WRITE of size 1 at ... Stack right redzone
reproducer.c — воспроизводит точную логику разбора как в уязвимой, так и в исправленной версииsrc/control/ctlparse.c1e27d63 (путь numid=)