---
id: CVE-2026-111149
title: >-
  FreeImage (danoli3 fork) through 3.19.23 contains a heap out-of-bounds read
  vulnerability in Unpack32Bits() in PluginPICT.cpp because rowBytes is never
  checked against the file-controlled PixMap width
summary: >-
  FreeImage (danoli3 fork) through 3.19.23 contains a heap out-of-bounds read
  vulnerability in Unpack32Bits() in PluginPICT.cpp because rowBytes is never
  checked against the file-controlled PixMap width. Attackers can supply a
  crafted PICT…
severity: medium
cvss: 6.1
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H'
cwe:
  - CWE-125
vendor: danoli3
product: FreeImage
affected:
  - FreeImage <= 3.19.23
  - FreeImage <= 3.18.0
published: '2026-10-15'
updated: '2026-10-15'
sourceUpdated: '2026-10-15T19:17:29.503'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-111149'
references:
  - url: 'https://github.com/danoli3/FreeImage'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/danoli3/FreeImage/blob/cc2bfc1b67d3a10e2c203c56932b09ffb52a4477/Source/FreeImage/PluginPICT.cpp#L605-L650
    label: disclosure@vulncheck.com
  - url: >-
      https://hackmd.io/@haind-pwn/freeimage-pict-unpack32bits-plane-conversion-oob-read
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/freeimage-through-3.19.23-heap-out-of-bounds-read-via-pict-unpack32bits
    label: disclosure@vulncheck.com
tags:
  - nvd
  - cve.org
ingestedAt: '2026-10-15T19:25:46.414Z'
---

## Overview

FreeImage (danoli3 fork) through 3.19.23 contains a heap out-of-bounds read vulnerability in Unpack32Bits() in PluginPICT.cpp because rowBytes is never checked against the file-controlled PixMap width. Attackers can supply a crafted PICT file with a truncated or undersized rowBytes to over-read up to 64 KiB of heap, leaking memory into decoded pixels or crashing the process.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
