<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-11-11T04:18:54.640448+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/hsec-2026-0012</id>
    <title>HSEC-2026-0012 — Out-of-bounds read in Eq and Ord on numbers with extreme exponents</title>
    <updated>2026-11-11T04:18:54.641743+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Hackage: scientific</p>
<p># Out-of-bounds read in Eq and Ord on numbers with extreme exponents</p>
<p>`scientific-0.3.9.0` reimplemented `Eq` and `Ord` without normalising their
arguments. The new implementation short-circuits on
`integerLog10' c + e` computed in `Int`, which overflows when the base-10
exponent is close to `maxBound :: Int`. The overflowed comparison then falls
through to `magnitude (e1 - e2)`, where the exponent difference overflows to a
negative `Int` as well. `magnitude` indexed its cached power-of-ten array
without a bounds check, so the negative index performed an out-of-bounds read
and the process died with `SIGSEGV`.</p>
<p>With `scientific-0.3.9.0` (GHC 9.10.3, x86_64-linux), as reported in
[basvandijk/scientific#120](https://github.com/basvandijk/scientific/issues/120):</p>
<p>```haskell
import Data.Scientific</p>
<p>main :: IO ()
main = print (scientific 10 maxBound == scientific 1 minBound)
```</p>
<p>```
$ ./repro; echo "exit=$?"
exit=139
```</p>
<p>The issue was discovered when Stackage nightly test suites
(`genvalidity-hspec-aeson`, `genvalidity-sydtest-aeson`) started segfaulting
after upgrading to `scientific-0.3.9.0`: their property tests round-trip
`aeson` `Value`s, which produces `Scientific`s with extreme exponents.</p>
<p>Versions before `0.3.9.0` did not crash, but `Eq`/`Ord` returned invalid
results there instead (the normalisation-based implementation overflows the
exponent, reporting `scientific 10 maxBound == scientific 1 minBound` as
`True`). The same unchecked read was also reachable through `(+)`…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/hsec-2026-0012"/>
  </entry>
</feed>
