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.

Project Subscriptions

Vendors Products
Debian Linux Subscribe
Fedoraproject Subscribe
Extra Packages For Enterprise Linux Subscribe
Graphicsmagick Subscribe
Graphicsmagick Subscribe
Advisories

No advisories yet.

Fixes

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.


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.

History

Thu, 20 Aug 2026 13:15:00 +0000

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'}


Projects

Sign in to view the affected projects.

cve-icon MITRE

Status: PUBLISHED

Assigner: seal

Published:

Updated: 2026-08-20T12:56:01.246Z

Reserved: 2026-08-20T12:40:51.495Z

Link: CVE-2026-77118

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-20T13:19:07.077

Modified: 2026-08-20T13:19:07.077

Link: CVE-2026-77118

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

No data.

Weaknesses