
مُكرِّر مستقل لـ CVE-2026-90781: كتابة خارج الحدود بمقدار بايت واحد في alsa-lib __snd_ctl_ascii_elem_id_parse() عند تحليل name= (بعلامات اقتباس وبدونها)
مُعيد إنتاج مستقل بلغة C لـ CVE-2026-90781، وهو كتابة خارج الحدود بحجم بايت واحد في دالة __snd_ctl_ascii_elem_id_parse() في alsa-lib عند تحليل name= (بالصيغتين المُقتبسة وغير المُقتبسة).
في src/control/ctlparse.c (الإصدار v1.2.16.1 و 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=)