Source: libpng1.6
Version: 1.6.55-1
Severity: grave
Tags: security upstream
Justification: user security hole
Forwarded: https://github.com/pnggroup/libpng/pull/824
X-Debbugs-Cc: [email protected], Debian Security Team <[email protected]>

Hi,

The following vulnerability was published for libpng1.6.

CVE-2026-33416[0]:
| LIBPNG is a reference library for use in applications that read,
| create, and manipulate PNG (Portable Network Graphics) raster image
| files. In versions 1.2.1 through 1.6.55, `png_set_tRNS` and
| `png_set_PLTE` each alias a heap-allocated buffer between
| `png_struct` and `png_info`, sharing a single allocation across two
| structs with independent lifetimes. The `trans_alpha` aliasing has
| been present since at least libpng 1.0, and the `palette` aliasing
| since at least 1.2.1. Both affect all prior release lines
| `png_set_tRNS` sets `png_ptr->trans_alpha = info_ptr->trans_alpha`
| (256-byte buffer) and `png_set_PLTE` sets `info_ptr->palette =
| png_ptr->palette` (768-byte buffer). In both cases, calling
| `png_free_data` (with `PNG_FREE_TRNS` or `PNG_FREE_PLTE`) frees the
| buffer through `info_ptr` while the corresponding `png_ptr` pointer
| remains dangling. Subsequent row-transform functions dereference
| and, in some code paths, write to the freed memory. A second call to
| `png_set_tRNS` or `png_set_PLTE` has the same effect, because both
| functions call `png_free_data` internally before reallocating the
| `info_ptr` buffer. Version 1.6.56 fixes the issue.


If you fix the vulnerability please also make sure to include the
CVE (Common Vulnerabilities & Exposures) id in your changelog entry.

For further information see:

[0] https://security-tracker.debian.org/tracker/CVE-2026-33416
    https://www.cve.org/CVERecord?id=CVE-2026-33416
[1] https://github.com/pnggroup/libpng/pull/824
[2] https://github.com/pnggroup/libpng/security/advisories/GHSA-m4pc-p4q3-4c7j

Please adjust the affected versions in the BTS as needed.

Regards,
Salvatore

Reply via email to