CVE-2026-77118
Out-of-bounds write in GraphicsMagick PCD decoder
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.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Active
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.4
Out-of-bounds write in GraphicsMagick PCD decoder
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.
- Record
CVE-2026-77118- CVSS 4.0
- 8.4 High
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 - Weakness
- CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-63345
8.4
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.
- Record
EUVD-2026-63345- CVSS 4.0
- 8.4 High
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-qjrj-qxx7-fc4j
8.4
A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage...
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.
- Record
GHSA-qjrj-qxx7-fc4j- CVSS 4.0
- 8.4 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-787
- Updated
- 2026-11-02
NVD
8.4
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.
- Record
CVE-2026-77118- CVSS 4.0
- 8.4 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-787
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-77118
8.4
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.
- Record
DEBIAN-CVE-2026-77118- CVSS 4.0
- 8.4 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVOESA-2026-3656
8.4
GraphicsMagick security update
GraphicsMagick is a comprehensive image processing package which is initially based on ImageMagick 5.5.2, but which has undergone significant re-work by the GraphicsMagick Group to significantly improve the quality and performance of the software.
Security Fix(es):
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.(CVE-2026-77118)
- Record
OESA-2026-3656- CVSS 4.0
- 8.4 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-77118
8.4
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.
- Record
UBUNTU-CVE-2026-77118- CVSS 4.0
- 8.4 High
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 - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
graphicsmagickDebian:12 |
All versions, plus listed versions 1.4+really1.3.40-41.4+really1.3.40-4+deb12u11.4+really1.3.41-11.4+really1.3.42-11.4+really1.3.42-1.1 Show 12 moreShow less1.4+really1.3.42-1.1~exp11.4+really1.3.43-11.4+really1.3.44-11.4+really1.3.45+hg17689-11.4+really1.3.45+hg17692-11.4+really1.3.45+hg17696-11.4+really1.3.45-11.4+really1.3.46-11.4+really1.3.46-21.4+really1.3.48-11.4+really1.3.48-21.4+really1.3.49-1 |
None known |
graphicsmagickDebian:13 |
All versions, plus listed versions 1.4+really1.3.45+hg17696-11.4+really1.3.46-11.4+really1.3.46-21.4+really1.3.48-11.4+really1.3.48-21.4+really1.3.49-1 |
None known |
graphicsmagickDebian:14 |
before 1.4+really1.3.48-1, plus listed versions 1.4+really1.3.45+hg17696-11.4+really1.3.46-11.4+really1.3.46-2 |
1.4+really1.3.48-1 |
GraphicsMagickopenEuler:20.03-LTS-SP4 |
before 1.3.41-4.oe2003sp4 | 1.3.41-4.oe2003sp4 |
GraphicsMagickopenEuler:22.03-LTS-SP4 |
before 1.3.41-4.oe2203sp4 | 1.3.41-4.oe2203sp4 |
GraphicsMagickopenEuler:24.03-LTS-SP1 |
before 1.3.41-4.oe2403sp1 | 1.3.41-4.oe2403sp1 |
GraphicsMagickopenEuler:24.03-LTS-SP3 |
before 1.3.41-4.oe2403sp3 | 1.3.41-4.oe2403sp3 |
GraphicsMagickopenEuler:24.03-LTS-SP4 |
before 1.3.47-2.oe2403sp4 | 1.3.47-2.oe2403sp4 |
graphicsmagickUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 1.3.16-1.1ubuntu21.3.16-1.1ubuntu31.3.18-1ubuntu31.3.18-1ubuntu3.11.3.18-1ubuntu3.1+esm1 Show 7 moreShow less1.3.18-1ubuntu3.1+esm21.3.18-1ubuntu3.1+esm31.3.18-1ubuntu3.1+esm41.3.18-1ubuntu3.1+esm51.3.18-1ubuntu3.1+esm61.3.18-1ubuntu3.1+esm71.3.18-1ubuntu3.1+esm8 |
None known |
graphicsmagickUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.3.21-31.3.23-11.3.23-1build11.3.23-1ubuntu0.11.3.23-1ubuntu0.1+esm1 Show 7 moreShow less1.3.23-1ubuntu0.21.3.23-1ubuntu0.31.3.23-1ubuntu0.41.3.23-1ubuntu0.51.3.23-1ubuntu0.61.3.23-1ubuntu0.6+esm11.3.23-1ubuntu0.6+esm2 |
None known |
Show 5 moreShow less
| Package | Affected | Fixed |
|---|---|---|
graphicsmagickUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 1.3.26-151.3.26-161.3.26-191.3.27-11.3.27-2 Show 7 moreShow less1.3.27-31.3.28-11.3.28-21.3.28-2ubuntu0.11.3.28-2ubuntu0.1+esm11.3.28-2ubuntu0.21.3.28-2ubuntu0.2+esm1 |
None known |
graphicsmagickUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 1.4+really1.3.33+hg16115-11.4+really1.3.33+hg16115-1build11.4+really1.3.33+hg16117-11.4+really1.3.34-11.4+really1.3.34-2 Show 4 moreShow less1.4+really1.3.34+hg16181-11.4+really1.3.35-11.4+really1.3.35-1ubuntu0.1~esm11.4+really1.3.35-1ubuntu0.1 |
None known |
graphicsmagickUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 1.4+really1.3.36+hg16481-21.4+really1.3.37-11.4+really1.3.37-1build11.4+really1.3.37+hg16662-1ubuntu11.4+really1.3.38-11.4+really1.3.38-1ubuntu0.11.4+really1.3.38-1ubuntu0.1+esm1 |
None known |
graphicsmagickUbuntu:Pro:24.04:LTS |
All versions, plus listed versions 1.4+really1.3.42-11.4+really1.3.42-1build11.4+really1.3.42-1.1build11.4+really1.3.42-1.1build21.4+really1.3.42-1.1build31.4+really1.3.42-1.1ubuntu0.1~esm1 |
None known |
graphicsmagickUbuntu:26.04:LTS |
All versions, plus listed versions 1.4+really1.3.45+hg17696-1build11.4+really1.3.46-2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-77118 is a high vulnerability (CVSS 8.4) in Debian Graphicsmagick, published August 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.17%, the 6th percentile. Fixed in graphicsmagick 1.4+really1.3.48-1.
References
foss.heptapod.net/graphicsmagick/graphicsmagick/-/commit/937cdd9920bd96
foss.heptapod.net/graphicsmagick/graphicsmagick/-/raw/GraphicsMagick-1_3_48/ChangeLog
nvd.nist.gov/vuln/detail/CVE-2026-77118
github.com/advisories/GHSA-qjrj-qxx7-fc4j
security-tracker.debian.org/tracker/CVE-2026-77118
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3656
ubuntu.com/security/CVE-2026-77118
cve.org/CVERecord?id=CVE-2026-77118