Tetrak
GitHub ↗
Security · libpng

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