png_set_tRNS and png_set_PLTE share one buffer between two structs
LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files.
- Advisory
- CVE-2026-33416
- Library
- libpng, libpng1.6 on Debian
- Published
- Severity
- 7.5 out of 10, as published
- Affected
- libpng 1.2.1 through 1.6.55
- Fixed in
- 1.6.56
- Reaches you
- through another call
What triggers it
A libpng caller that sets the palette or transparency on a png_info it then frees separately from the png_struct.
What sillybos does
Not reached by opening a file
Opening or reading a file never reaches this flaw, so a check before decoding has nothing to refuse. Listed so that nobody expects it to.
A lifetime flaw between the setter APIs and the caller's own frees, not something a crafted file causes on its own; reading a PNG through Pillow does not call these setters.
Proposed from the advisory's text on 2026-11-01, as part of folding the backfill into the record; confirmed by a person on 2026-11-03.
How to protect yourself
In general. Upgrade to libpng 1.6.56.
Specifically. Not a pre-decode matter: the flaw is in a call that opening a file never makes.
The general advice applies to every row here.
Sources
- https://osv.dev/vulnerability/DEBIAN-CVE-2026-33416
- The record entry, triaged 2026-11-03, last checked 2026-11-03