<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-30T17:32:04.575256+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-74640</id>
    <title>CVE-2026-74640 — ALSA: FCP: fix OOB write in fcp_meter_ctl_get()</title>
    <updated>2026-09-30T17:32:04.593376+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>ALSA: FCP: fix OOB write in fcp_meter_ctl_get()</p>
<p>fcp_ioctl_set_meter_map() bounds the user-supplied Level Meter map size
by the driver's own limit of 255</p>
<p>if (map.map_size &lt; 1 || map.map_size &gt; 255 ||
	    map.meter_slots &lt; 1 || map.meter_slots &gt; 255)
		return -EINVAL;</p>
<p>and passes it to fcp_add_new_ctl() as the control's channel count, where
it is stored as elem-&gt;channels.</p>
<p>Every control read writes into struct snd_ctl_elem_value, whose integer
array is declared long value[128], so the limit is 128, not 255.
fcp_meter_ctl_get() stores one 64-bit word per channel into that array
with no bound of its own:</p>
<p>for (i = 0; i &lt; elem-&gt;channels; i++) {
		int idx = private-&gt;meter_level_map[i];
		int value = idx &lt; 0 ? 0 : le32_to_cpu(resp[idx]);</p>
<p>ucontrol-&gt;value.integer.value[i] = value;
	}</p>
<p>snd_ctl_elem_read_user() serves that object from
memdup_user(_control, sizeof(*control)), 1224 bytes on LP64 out of
kmalloc-2048.  offsetof(struct snd_ctl_elem_value, value) is 72, so
element i is written at byte 72 + 8 * i and element 144 already lands
past the allocation.  At map_size 255 the last store ends at byte 2112,
888 bytes past the object and 64 bytes into the adjacent slab object.
The stored words come from the device and meter_level_map[] selects
which word lands in which slot, so extent and contents are both
controlled.</p>
<p>The core does not catch this.  snd_ctl_check_elem_info() is reached only
from __snd_ctl_elem_i…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-74640"/>
  </entry>
</feed>
