Skip to content

chore(deps): bundled third-party library updates for 1.15.3#5351

Merged
matejk merged 5 commits into
mainfrom
1.15.3-bundled-dep-updates
May 11, 2026
Merged

chore(deps): bundled third-party library updates for 1.15.3#5351
matejk merged 5 commits into
mainfrom
1.15.3-bundled-dep-updates

Conversation

@matejk
Copy link
Copy Markdown
Contributor

@matejk matejk commented May 11, 2026

Summary

Refresh four bundled third-party dependencies and record tessil's actual version. Five commits, one per dependency.

Commit Update Notes
9376f1a29 tessil: record 1.2.0 in CMakeLists/README Bundled snapshot already matches upstream v1.2.0 (verified by header diff). The local static removal on numeric_cast/deserialize_value remains, tracked by upstream PR #54.
0f9fc99a1 expat: 2.7.5 -> 2.8.1 CVE-2026-41080, CVE-2026-45186. Required restoring POCO's portable expat_config.h after the update script clobbered it, plus adding the new random_*.{c,h} files and gating them per platform in CMakeLists to mirror upstream.
bc56c38b9 sqlite3: 3.53.0 -> 3.53.1 Fix WAL-reset database corruption bug.
2f8ef3a9c libpng: 1.6.57 -> 1.6.58 Fix png_get_PLTE() returning stale palette data when gamma correction or alpha-compositing is the only transform applied (regression from 1.6.56). The bundled pnglibconf.h is preserved.
afbc44fd2 7zip (LZMA SDK): 26.00 -> 26.01 Linux huge-pages support, new `-spo[d

After this PR, dependencies/check-upstream-versions.sh reports all bundled deps up to date.

Test plan

  • expat: XML-testrunner -all (138 tests) on macOS arm64 + Linux arm64
  • sqlite3: DataSQLite-testrunner -all (100 tests) on macOS arm64 + Linux arm64
  • libpng: PDF-testrunner -all (8 tests) on macOS arm64 + Linux arm64
  • 7zip: SevenZip + un7zip sample build cleanly on macOS + Linux; un7zip smoke-tested against a real .7z archive (list + extract round-trip)
  • CI green on all platforms (Windows MSVC for expat platform-gated entropy file selection in particular)

CHANGELOG entries (suggested)

For the "Bundled Third-Party Library Upgrades" section of 1.15.3:

  • expat: 2.7.5 -> 2.8.1 (CVE-2026-41080, CVE-2026-45186)
  • sqlite3: 3.53.0 -> 3.53.1 (WAL-reset corruption fix)
  • libpng: 1.6.57 -> 1.6.58 (png_get_PLTE regression fix)
  • 7zip (LZMA SDK): 26.00 -> 26.01

matejk added 5 commits May 11, 2026 18:49
The bundled tessil/ordered-map snapshot already corresponds to upstream
v1.2.0 (verified by diffing the headers), but the version was not
recorded in dependencies/tessil/CMakeLists.txt and the README table
listed "n/a". This caused dependencies/check-upstream-versions.sh to
report "(cannot compare)" for tessil.

Add the standard "# Version: X.Y.Z" comment and update the README so
the upstream version checker can compare correctly.

The local "static" removal on numeric_cast/deserialize_value remains in
place, tracked by the existing README note pointing to upstream PR #54.
…-2026-45186)

Security fixes from upstream:
- CVE-2026-45186 (2.8.1): Quadratic runtime from attribute name
  collision checks allowed denial of service through moderately sized
  crafted XML input (CWE-407). Compression amplifies the attack.
- CVE-2026-41080 (2.8.0): Hash flooding protection used only 4-8 bytes
  of salt entropy where 16 are supported by SipHash. New
  XML_SetHashSalt16Bytes API; XML_SetHashSalt is now deprecated.

Other notable upstream changes carried in:
- New getentropy(3) entropy source support in xmlparse.c.
- Various bug fixes around errno propagation after randomization
  calls and uint8_t character-type assumptions.
- Library SOVERSION moved from 1.12.0 to 1.12.1.

Bundled-build adjustments:

- Restore Poco's portable expat_config.h after the update script
  overwrote it with the upstream autoconf-generated copy. The Poco
  version sets BYTEORDER from compiler predefined macros so the
  bundle works across all supported targets without per-platform
  generation.
- Expat 2.8.x split each entropy source into its own random_*.c file.
  Add the new files to dependencies/expat/src/ and gate them per
  platform in CMakeLists.txt to mirror upstream's lib/CMakeLists.txt
  -- without gating, random_getrandom.c fails to compile on macOS
  because it references SYS_getrandom unguarded.

Verified: XML-testrunner -all passes (138 tests) on macOS arm64
and Linux arm64 (orb).
Patch release that addresses problems reported in 3.53.0. Most notable:

  Fix the WAL-reset database corruption bug.

Reference: https://www.sqlite.org/releaselog/3_53_1.html

Verified: DataSQLite-testrunner -all passes (100 tests) on macOS arm64
and Linux arm64 (orb).
Patch release that fixes a regression introduced in 1.6.56:
png_get_PLTE() returned stale palette data when gamma correction or
alpha-compositing was the only transform applied.

Reference: http://www.libpng.org/pub/png/libpng.html

The bundled pnglibconf.h is preserved (it is a generated configuration
file maintained locally and is not present in the upstream tarball).

Verified: PDF-testrunner -all passes (8 tests, libpng linked through
libharu) on macOS arm64 and Linux arm64 (orb).
Upstream changes (https://www.7-zip.org/history.txt):
- Linux can use huge pages (2 MB) for ~10% faster 7z/xz/LZMA/LZMA2
  compression.
- New -spo[d|c|r] switch for output-directory path generation.
- Several bug fixes.

The bundled snapshot is the LZMA SDK subset only; this update brings
in upstream changes to Alloc, Threads, 7zArcIn, LzmaEnc, etc. -- 13
files with substantive diffs out of 86 in the SDK; the rest are
byte-identical between 26.00 and 26.01.

POCO has no SevenZip testsuite, so verification is by:
- libPocoSevenZip builds cleanly on macOS arm64 and Linux arm64 (orb).
- The un7zip sample builds and successfully lists + extracts a 7z
  archive created with the system 7z tool.
@matejk matejk added this to the Release 1.15.3 milestone May 11, 2026
@matejk matejk merged commit e5542b4 into main May 11, 2026
51 checks passed
@matejk matejk deleted the 1.15.3-bundled-dep-updates branch May 11, 2026 19:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant