<?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://db.gcve.eu</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>Mon, 09 Nov 2026 19:40:43 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-99109 — smb: client: reject SetEA requests that do not fit the request buffer</title>
      <link>https://db.gcve.eu/vuln/cve-2026-99109</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;smb: client: reject SetEA requests that do not fit the request buffer&lt;/p&gt;
&lt;p&gt;CIFSSMBSetEA() copies the caller&amp;#39;s extended attribute value into the
SMB request buffer without checking that it fits.  The requirement is
stated in the source but was never implemented:&lt;/p&gt;
&lt;p&gt;/*BB add length check to see if it would fit in
	     negotiated SMB buffer size BB */
	/* if (ea_value_len &amp;gt; buffer_size - 512 (enough for header)) */
	if (ea_value_len)
		memcpy(parm_data-&amp;gt;list.name + name_len + 1,
		       ea_value, ea_value_len);&lt;/p&gt;
&lt;p&gt;The only bound applied on the way in is in cifs_xattr_set():&lt;/p&gt;
&lt;p&gt;#define MAX_EA_VALUE_SIZE CIFSMaxBufSize
	...
	if (size &amp;gt; MAX_EA_VALUE_SIZE)&lt;/p&gt;
&lt;p&gt;CIFSMaxBufSize is the full payload capacity of the buffer, so a value
of exactly that size leaves no room for the SMB header, the TRANS2
parameter block, the fealist header and the EA name that are written
ahead of it in the same object.&lt;/p&gt;
&lt;p&gt;SendReceive() already enforces the correct limit on this very length:&lt;/p&gt;
&lt;p&gt;if (in_len &amp;gt; CIFSMaxBufSize + MAX_CIFS_HDR_SIZE)&lt;/p&gt;
&lt;p&gt;but it is called after the copy has taken place.  An unprivileged
setxattr(2) on an SMB1 mount with a 250-byte name and a 16384-byte
value writes 16384 bytes starting 345 bytes into a 16588-byte
cifs_request object, ending 141 bytes past it:&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-out-of-bounds in CIFSSMBSetEA+0xabc/0xde0
  Write of size 16384 at addr ffff888003aa0159 by task init/68
   __asan_memcpy+0x3c/0x60
   CIFSSMBSetEA+0xabc/…&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;smb: client: reject SetEA requests that do not fit the request buffer&lt;/p&gt;
&lt;p&gt;CIFSSMBSetEA() copies the caller&amp;#39;s extended attribute value into the
SMB request buffer without checking that it fits.  The requirement is
stated in the source but was never implemented:&lt;/p&gt;
&lt;p&gt;/*BB add length check to see if it would fit in
	     negotiated SMB buffer size BB */
	/* if (ea_value_len &amp;gt; buffer_size - 512 (enough for header)) */
	if (ea_value_len)
		memcpy(parm_data-&amp;gt;list.name + name_len + 1,
		       ea_value, ea_value_len);&lt;/p&gt;
&lt;p&gt;The only bound applied on the way in is in cifs_xattr_set():&lt;/p&gt;
&lt;p&gt;#define MAX_EA_VALUE_SIZE CIFSMaxBufSize
	...
	if (size &amp;gt; MAX_EA_VALUE_SIZE)&lt;/p&gt;
&lt;p&gt;CIFSMaxBufSize is the full payload capacity of the buffer, so a value
of exactly that size leaves no room for the SMB header, the TRANS2
parameter block, the fealist header and the EA name that are written
ahead of it in the same object.&lt;/p&gt;
&lt;p&gt;SendReceive() already enforces the correct limit on this very length:&lt;/p&gt;
&lt;p&gt;if (in_len &amp;gt; CIFSMaxBufSize + MAX_CIFS_HDR_SIZE)&lt;/p&gt;
&lt;p&gt;but it is called after the copy has taken place.  An unprivileged
setxattr(2) on an SMB1 mount with a 250-byte name and a 16384-byte
value writes 16384 bytes starting 345 bytes into a 16588-byte
cifs_request object, ending 141 bytes past it:&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-out-of-bounds in CIFSSMBSetEA+0xabc/0xde0
  Write of size 16384 at addr ffff888003aa0159 by task init/68
   __asan_memcpy+0x3c/0x60
   CIFSSMBSetEA+0xabc/…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-99109</guid>
    </item>
  </channel>
</rss>
