---
id: CVE-2026-111148
title: >-
  libsidplayfp through 3.1.1 contains a heap out-of-bounds read vulnerability
  that allows attackers to crash applications by supplying a PSID/RSID file with
  an unchecked data offset
summary: >-
  libsidplayfp through 3.1.1 contains a heap out-of-bounds read vulnerability
  that allows attackers to crash applications by supplying a PSID/RSID file with
  an unchecked data offset. Attackers can set the header data offset beyond the
  file…
severity: medium
cvss: 5.5
cvssVector: 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H'
cwe:
  - CWE-125
vendor: libsidplayfp
product: libsidplayfp
affected:
  - libsidplayfp <= 3.1.1
published: '2026-10-15'
updated: '2026-10-15'
sourceUpdated: '2026-10-15T19:17:29.353'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-111148'
references:
  - url: 'https://github.com/libsidplayfp/libsidplayfp'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/libsidplayfp/libsidplayfp/blob/732fa8ec8131fc75aafc2eaea583ddcdeea2a3cc/src/sidtune/SidTuneBase.cpp#L295-L300
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/libsidplayfp/libsidplayfp/blob/732fa8ec8131fc75aafc2eaea583ddcdeea2a3cc/src/sidtune/SidTuneBase.cpp#L488-L500
    label: disclosure@vulncheck.com
  - url: >-
      https://hackmd.io/@haind-pwn/libsidplayfp-psid-dataoffset-underflow-oob-read
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/libsidplayfp-through-3.1.1-heap-out-of-bounds-read-via-sidtunebase-acceptsidtune
    label: disclosure@vulncheck.com
tags:
  - nvd
  - cve.org
  - exploit-available
ingestedAt: '2026-10-15T19:25:46.414Z'
exploitAvailable: true
ssvc:
  exploitation: poc
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-10-15T19:39:30.316995Z'
---

## Overview

libsidplayfp through 3.1.1 contains a heap out-of-bounds read vulnerability that allows attackers to crash applications by supplying a PSID/RSID file with an unchecked data offset. Attackers can set the header data offset beyond the file size, wrapping the length calculation so resolveAddrs() reads up to 64 KiB past the heap buffer.

## Remediation

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