CVE-2026-77118

Out-of-bounds write in GraphicsMagick PCD decoder

Published Aug 20, 2026 CVSS 4.0 · 8.4 High EPSS < 1% KEV · Not listed
Description
A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage() (coders/pcd.c), the Huffman delta loop advances its output pointer with q++ after every decoded delta and never checks it against the end of the heap-allocated luma/chroma plane buffers. The pointer is repositioned only when a sync marker introduces a new plane/row; between sync markers the run length is bounded solely by the input.



A crafted PCD file that positions the pointer near the end of a plane and then supplies a long run of deltas with no intervening sync therefore walks the pointer past the end of the allocation and writes through it. Processing an untrusted PCD file — for example with gm convert or gm identify, or through any application linked against libGraphicsMagick — can corrupt heap memory beyond the buffers.

Remediation

Vendor Solution

Upgrade to GraphicsMagick 1.3.48 or later, which bounds the decode output pointer against the end of each plane buffer and over-provisions the buffers.


Vendor Workaround

Where upgrading is not possible, prevent the PCD and PCDS coders from being used on untrusted input. GraphicsMagick detects PCD by file content, so filtering on filename extension is not sufficient; the coder module must be removed or the format rejected before decoding.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Debian graphicsmagick
Fedora Project
Fedora Project graphicsmagick
Vendors & Products Debian graphicsmagick
Fedora Project
Fedora Project graphicsmagick
Type Values Removed Values Added
Description A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage() (coders/pcd.c), the Huffman delta loop advances its output pointer with q++ after every decoded delta and never checks it against the end of the heap-allocated luma/chroma plane buffers. The pointer is repositioned only when a sync marker introduces a new plane/row; between sync markers the run length is bounded solely by the input. A crafted PCD file that positions the pointer near the end of a plane and then supplies a long run of deltas with no intervening sync therefore walks the pointer past the end of the allocation and writes through it. Processing an untrusted PCD file — for example with gm convert or gm identify, or through any application linked against libGraphicsMagick — can corrupt heap memory beyond the buffers.
Title Out-of-bounds write in GraphicsMagick PCD decoder
First Time appeared Debian
Debian debian Linux
Fedoraproject
Fedoraproject extra Packages For Enterprise Linux
Graphicsmagick
Graphicsmagick graphicsmagick
Weaknesses CWE-787
CPEs cpe:2.3:a:fedoraproject:extra_packages_for_enterprise_linux:8.0:*:*:*:*:*:*:*
cpe:2.3:a:fedoraproject:extra_packages_for_enterprise_linux:9.0:*:*:*:*:*:*:*
cpe:2.3:a:graphicsmagick:graphicsmagick:*:*:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:11:*:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:12:*:*:*:*:*:*:*
cpe:2.3:o:debian:debian_linux:13:*:*:*:*:*:*:*
Vendors & Products Debian
Debian debian Linux
Fedoraproject
Fedoraproject extra Packages For Enterprise Linux
Graphicsmagick
Graphicsmagick graphicsmagick
References
Metrics cvssV4_0

{'score': 8.4, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}