<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Wed, 30 Sep 2026 07:39:34 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64479 — ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64479</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()&lt;/p&gt;
&lt;p&gt;snd_seq_event_dup() copies an incoming event into a pool cell and, in
the UMP-enabled build, clears the trailing cell-&amp;gt;ump.raw.extra word that
the memcpy() did not cover.  The guard deciding whether to clear it
compares the copied size against sizeof(cell-&amp;gt;event):&lt;/p&gt;
&lt;p&gt;memcpy(&amp;amp;cell-&amp;gt;ump, event, size);
	if (size &amp;lt; sizeof(cell-&amp;gt;event))
		cell-&amp;gt;ump.raw.extra = 0;&lt;/p&gt;
&lt;p&gt;For a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) ==
sizeof(cell-&amp;gt;event), so the condition is false and the extra word keeps
stale data.  The cell pool is allocated with kvmalloc() (not zeroed) and
cells are reused via a free list, so that word holds uninitialised heap
or leftover event data.&lt;/p&gt;
&lt;p&gt;When such a cell is delivered to a UMP client (client-&amp;gt;midi_version &amp;gt; 0)
that set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it
unconverted -- snd_seq_read() reads it out as the larger struct
snd_seq_ump_event and copies the stale word to user space, a 4-byte
kernel heap infoleak to an unprivileged /dev/snd/seq client.&lt;/p&gt;
&lt;p&gt;Compare against sizeof(cell-&amp;gt;ump) instead, so the trailing word is zeroed
for every event shorter than the UMP cell.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;ALSA: seq: Fix uninitialised heap leak in snd_seq_event_dup()&lt;/p&gt;
&lt;p&gt;snd_seq_event_dup() copies an incoming event into a pool cell and, in
the UMP-enabled build, clears the trailing cell-&amp;gt;ump.raw.extra word that
the memcpy() did not cover.  The guard deciding whether to clear it
compares the copied size against sizeof(cell-&amp;gt;event):&lt;/p&gt;
&lt;p&gt;memcpy(&amp;amp;cell-&amp;gt;ump, event, size);
	if (size &amp;lt; sizeof(cell-&amp;gt;event))
		cell-&amp;gt;ump.raw.extra = 0;&lt;/p&gt;
&lt;p&gt;For a legacy (non-UMP) event, size == sizeof(struct snd_seq_event) ==
sizeof(cell-&amp;gt;event), so the condition is false and the extra word keeps
stale data.  The cell pool is allocated with kvmalloc() (not zeroed) and
cells are reused via a free list, so that word holds uninitialised heap
or leftover event data.&lt;/p&gt;
&lt;p&gt;When such a cell is delivered to a UMP client (client-&amp;gt;midi_version &amp;gt; 0)
that set SNDRV_SEQ_FILTER_NO_CONVERT -- so the legacy event reaches it
unconverted -- snd_seq_read() reads it out as the larger struct
snd_seq_ump_event and copies the stale word to user space, a 4-byte
kernel heap infoleak to an unprivileged /dev/snd/seq client.&lt;/p&gt;
&lt;p&gt;Compare against sizeof(cell-&amp;gt;ump) instead, so the trailing word is zeroed
for every event shorter than the UMP cell.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64479</guid>
    </item>
  </channel>
</rss>
