<?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 05:35:42 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-89559 — libnvdimm/labels: Prevent integer overflow in __nd_label_validate()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-89559</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;libnvdimm/labels: Prevent integer overflow in __nd_label_validate()&lt;/p&gt;
&lt;p&gt;The on-media namespace index field nslot is a u32 read from the DIMM
label storage area.  __nd_label_validate() bounds it against the config
area size, but sizeof_namespace_label() returns unsigned, so the product
nslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before
the comparison.  A crafted nslot passes the bound and is then used as the
loop trip count in nd_label_data_init(), whose memset() walks off the end
of the config_size buffer: an out-of-bounds write.&lt;/p&gt;
&lt;p&gt;The field is not trusted -- it comes from the medium, or from userspace
via ND_CMD_SET_CONFIG_DATA.  Evaluate the product in 64-bit so the bound
check is exact; conforming labels are unaffected.&lt;/p&gt;
&lt;p&gt;The check was safe when introduced by commit 4a826c83db4e (&amp;#34;libnvdimm:
namespace indices: read and validate&amp;#34;): it multiplied by sizeof(struct
nd_namespace_label), a size_t, so on a 64-bit build the product did not
wrap.  Commit 564e871aa66f (&amp;#34;libnvdimm, label: add v1.2 nvdimm label
definitions&amp;#34;) narrowed it to 32 bits when the label size became a runtime
value read via sizeof_namespace_label().&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;libnvdimm/labels: Prevent integer overflow in __nd_label_validate()&lt;/p&gt;
&lt;p&gt;The on-media namespace index field nslot is a u32 read from the DIMM
label storage area.  __nd_label_validate() bounds it against the config
area size, but sizeof_namespace_label() returns unsigned, so the product
nslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before
the comparison.  A crafted nslot passes the bound and is then used as the
loop trip count in nd_label_data_init(), whose memset() walks off the end
of the config_size buffer: an out-of-bounds write.&lt;/p&gt;
&lt;p&gt;The field is not trusted -- it comes from the medium, or from userspace
via ND_CMD_SET_CONFIG_DATA.  Evaluate the product in 64-bit so the bound
check is exact; conforming labels are unaffected.&lt;/p&gt;
&lt;p&gt;The check was safe when introduced by commit 4a826c83db4e (&amp;#34;libnvdimm:
namespace indices: read and validate&amp;#34;): it multiplied by sizeof(struct
nd_namespace_label), a size_t, so on a 64-bit build the product did not
wrap.  Commit 564e871aa66f (&amp;#34;libnvdimm, label: add v1.2 nvdimm label
definitions&amp;#34;) narrowed it to 32 bits when the label size became a runtime
value read via sizeof_namespace_label().&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-89559</guid>
    </item>
  </channel>
</rss>
