You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by GitBox <gi...@apache.org> on 2026/09/01 08:50:29 UTC
[GH] (poi/fix-zip-entry-read-regression): Workflow run "Java CI with Gradle" failed!
The GitHub Actions job "Java CI with Gradle" on poi.git/fix-zip-entry-read-regression has failed.
Run started by GitHub user pjfanning (triggered by pjfanning).
Head commit for run:
6480175abb119154cc61a1325aee4b31fbbaead2 / PJ Fanning <pj...@users.noreply.github.com>
Restore sized reads for known zip entry sizes while capping the initial allocation
The change in #1227 made ZipArchiveFakeEntry read every in-memory entry via
IOUtils.toByteArrayWithMaxLength, which starts from a 4KB buffer and grows by
doubling. For larger entries that produces a cascade of reallocations and
short-lived garbage arrays; with poi-integration running tests in parallel this
regressed heap usage badly enough to cause OutOfMemoryError on CI.
Restore the exactly-sized single allocation for entries with a known declared
size, while keeping #1227's protection against untrusted size fields:
- New IOUtils.toByteArray overload takes a maxInitBufferSize that caps the
initial buffer allocation; the buffer still grows as real data arrives,
bounded by length/maxLength. Existing overloads are unchanged.
- ZipArchiveFakeEntry uses it with a 2MB cap: entries up to 2MB (the vast
majority) get one exactly-sized allocation, larger ones grow from a 2MB
base, and a bogus huge declared size can force at most a 2MB eager
allocation.
- Reads are bounded by the declared entry size again: an entry holding fewer
bytes than declared fails with EOFException (as before #1227), and an entry
holding more bytes than declared is now rejected with an IOException instead
of the extra bytes being read.
The stricter size validation changes which exception 20 corrupt fuzz files in
the poi-integration corpus surface (they all declare entry sizes smaller than
the data actually present); the expected exceptions were re-derived by running
each handler against each file.
Co-Authored-By: Claude Opus 4.8 <no...@anthropic.com>
Report URL: https://github.com/apache/poi/actions/runs/33487235054
With regards,
GitHub Actions via GitBox
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@poi.apache.org
For additional commands, e-mail: dev-help@poi.apache.org