<?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 10:51:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-73194 — DBI versions before 1.652 for Perl allow a heap out-of-bounds write via an unvalidated numeric placeholder that sets th…</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-73194</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; DBI&lt;/p&gt;
&lt;p&gt;DBI versions before 1.652 for Perl allow a heap out-of-bounds write via an unvalidated numeric placeholder that sets the binder counter in preparse.&lt;/p&gt;
&lt;p&gt;preparse reserves seven output bytes per input byte, the width of the longest &amp;#39;:p99999&amp;#39; expansion. The &amp;#39;:N&amp;#39; branch parses the number with `atoi(src)` and assigns it to the binder counter with no range check, so a statement containing &amp;#39;:2147483648&amp;#39; leaves the counter negative (-2147483648 with glibc, where atoi wraps). Each following &amp;#39;?&amp;#39; then expands through `sprintf(start, &amp;#34;:p%d&amp;#34;, idx++)` to &amp;#39;:p-2147483648&amp;#39;, 14 bytes with the terminating NUL where the buffer budgets 7. The placeholder limit added in 1.650 tests the counter against 99,999, which a negative counter passes.&lt;/p&gt;
&lt;p&gt;Any caller that preparses an untrusted statement into &amp;#39;:pN&amp;#39; style placeholders gets a heap out-of-bounds write that grows with the number of &amp;#39;?&amp;#39; marks following the poisoned placeholder. The &amp;#39;?&amp;#39; and &amp;#39;%s&amp;#39; return styles compare the parsed number against the expected sequence and error out, and are unaffected.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; DBI&lt;/p&gt;
&lt;p&gt;DBI versions before 1.652 for Perl allow a heap out-of-bounds write via an unvalidated numeric placeholder that sets the binder counter in preparse.&lt;/p&gt;
&lt;p&gt;preparse reserves seven output bytes per input byte, the width of the longest &amp;#39;:p99999&amp;#39; expansion. The &amp;#39;:N&amp;#39; branch parses the number with `atoi(src)` and assigns it to the binder counter with no range check, so a statement containing &amp;#39;:2147483648&amp;#39; leaves the counter negative (-2147483648 with glibc, where atoi wraps). Each following &amp;#39;?&amp;#39; then expands through `sprintf(start, &amp;#34;:p%d&amp;#34;, idx++)` to &amp;#39;:p-2147483648&amp;#39;, 14 bytes with the terminating NUL where the buffer budgets 7. The placeholder limit added in 1.650 tests the counter against 99,999, which a negative counter passes.&lt;/p&gt;
&lt;p&gt;Any caller that preparses an untrusted statement into &amp;#39;:pN&amp;#39; style placeholders gets a heap out-of-bounds write that grows with the number of &amp;#39;?&amp;#39; marks following the poisoned placeholder. The &amp;#39;?&amp;#39; and &amp;#39;%s&amp;#39; return styles compare the parsed number against the expected sequence and error out, and are unaffected.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-73194</guid>
    </item>
  </channel>
</rss>
