<?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>Tue, 29 Sep 2026 23:47:23 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-89633 — smb: client: fix OOB read/write from unvalidated DataOffset in coalesce_t2()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-89633</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: fix OOB read/write from unvalidated DataOffset in coalesce_t2()&lt;/p&gt;
&lt;p&gt;coalesce_t2() computes data pointers directly from server-supplied
DataOffset fields with no validation against buffer bounds:&lt;/p&gt;
&lt;p&gt;data_area_of_tgt = (char *)&amp;amp;pSMBt-&amp;gt;hdr.Protocol +
                     get_unaligned_le16(&amp;amp;pSMBt-&amp;gt;t2_rsp.DataOffset);
  data_area_of_src = (char *)&amp;amp;pSMBs-&amp;gt;hdr.Protocol +
                     get_unaligned_le16(&amp;amp;pSMBs-&amp;gt;t2_rsp.DataOffset);
  data_area_of_tgt += total_in_tgt;
  ...
  memcpy(data_area_of_tgt, data_area_of_src, total_in_src);&lt;/p&gt;
&lt;p&gt;A small DataOffset can push a pointer below the actual byte area,
overwriting header fields; a large one can push it past the buffer
end, causing out-of-bounds heap reads (source) or writes (target).
The BCC overflow guard does not prevent this: BCC reflects how much
data is present, while DataOffset controls where in the buffer it
starts.&lt;/p&gt;
&lt;p&gt;The &amp;#34;validate target area&amp;#34; comment present since the function was
first written in 2005 was a placeholder that was never implemented.&lt;/p&gt;
&lt;p&gt;Add lower- and upper-bound checks for both data pointers before the
memcpy, and before any target header fields are modified.&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: fix OOB read/write from unvalidated DataOffset in coalesce_t2()&lt;/p&gt;
&lt;p&gt;coalesce_t2() computes data pointers directly from server-supplied
DataOffset fields with no validation against buffer bounds:&lt;/p&gt;
&lt;p&gt;data_area_of_tgt = (char *)&amp;amp;pSMBt-&amp;gt;hdr.Protocol +
                     get_unaligned_le16(&amp;amp;pSMBt-&amp;gt;t2_rsp.DataOffset);
  data_area_of_src = (char *)&amp;amp;pSMBs-&amp;gt;hdr.Protocol +
                     get_unaligned_le16(&amp;amp;pSMBs-&amp;gt;t2_rsp.DataOffset);
  data_area_of_tgt += total_in_tgt;
  ...
  memcpy(data_area_of_tgt, data_area_of_src, total_in_src);&lt;/p&gt;
&lt;p&gt;A small DataOffset can push a pointer below the actual byte area,
overwriting header fields; a large one can push it past the buffer
end, causing out-of-bounds heap reads (source) or writes (target).
The BCC overflow guard does not prevent this: BCC reflects how much
data is present, while DataOffset controls where in the buffer it
starts.&lt;/p&gt;
&lt;p&gt;The &amp;#34;validate target area&amp;#34; comment present since the function was
first written in 2005 was a placeholder that was never implemented.&lt;/p&gt;
&lt;p&gt;Add lower- and upper-bound checks for both data pointers before the
memcpy, and before any target header fields are modified.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-89633</guid>
    </item>
  </channel>
</rss>
