---
id: CVE-2026-111270
title: 'libmodplug through 0.8.9.1 Heap Out-of-Bounds Write via CSoundFile::ReadDSM'
summary: >-
  libmodplug through 0.8.9.1 contains a heap-based out-of-bounds write in
  CSoundFile::ReadDSM() in src/load_dsm.cpp because nPat is never checked
  against MAX_PATTERNS. Attackers can supply a crafted DSM file with over 240
  PATT chunks or a …
severity: medium
cvss: 6.1
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:H'
cvssSource: cna
cwe:
  - CWE-787
vendor: Konstanty Bialkowski
product: libmodplug
affected:
  - libmodplug <= 0.8.9.1
published: '2026-10-15'
updated: '2026-10-15'
sourceUpdated: '2026-10-15T21:43:17.665Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-111270'
references:
  - url: 'https://hackmd.io/@haind-pwn/libmodplug-dsm-pattern-oob-write'
  - url: >-
      https://github.com/Konstanty/libmodplug/blob/d1b97ed0020bc620a059d3675d1854b40bd2608d/src/load_dsm.cpp#L130-L139
  - url: 'https://github.com/Konstanty/libmodplug'
  - url: >-
      https://www.vulncheck.com/advisories/libmodplug-through-0.8.9.1-heap-out-of-bounds-write-via-csoundfile-readdsm
    label: >-
      VulnCheck Advisory: libmodplug through 0.8.9.1 Heap Out-of-Bounds Write
      via CSoundFile::ReadDSM
tags:
  - cve.org
ingestedAt: '2026-10-15T22:48:25.446Z'
---

## Overview

libmodplug through 0.8.9.1 contains a heap-based out-of-bounds write in CSoundFile::ReadDSM() in src/load_dsm.cpp because nPat is never checked against MAX_PATTERNS. Attackers can supply a crafted DSM file with over 240 PATT chunks or a wrapping patt_len value to corrupt heap memory and crash the consuming process.

## Affected

- `libmodplug <= 0.8.9.1`

## Remediation

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