oss-sec mailing list archives
Re: libmspack: heap buffer overflow in make_decode_table() (Huffman decode table construction) -- CVE requested
From: Sam James <sam () gentoo org>
Date: Thu, 20 Aug 2026 04:37:37 +0100
Sumit Chakraborty <sumit.ch2004 () gmail com> writes:
Hi all, Reporting a memory-safety issue found via independent source audit of libmspack (https://github.com/kyz/libmspack), a small C library for Microsoft compression formats (CAB, CHM, LIT, HLP, KWAJ, SZDD) used by cabextract and vendored by ClamAV (libclammspack), among others.
Thanks for sharing and bringing it to the list.
Summary: make_decode_table() in mspack/readhuff.h -- the shared Huffman decode-table builder used across the library's CAB/CHM/LZX decoders -- does not validate that its input code-length array satisfies Kraft's inequality before building extension nodes for long codes. A crafted, format-legal length distribution can cause it to write past the end of the caller-allocated decode table while still returning success, giving the caller no indication anything went wrong. I've confirmed this is reachable through real library API calls with a hand-crafted input file, not just direct/synthetic function calls, and precisely measured the resulting out-of-bounds write. I'm holding back further technical detail (exact trigger conditions, PoC construction, affected call sites) pending coordinated disclosure. Reported to the maintainer (Stuart Caie) directly by email on 2026-08-16. No CVE currently assigned. Requesting a CVE ID be reserved for tracking; full technical writeup and PoC will follow once a fix is available or a reasonable disclosure window has passed.
I'm not sure if I follow the purpose of the email. If you'd like to handle disclosure to distros, you can use the linux-distros@ or distros@ mailing list as appropriate, provided you're able & willing to follow the rules at https://oss-security.openwall.org/wiki/mailing-lists/distros#list-policy-and-instructions-for-reporters. If you're *not* interested in doing that, then we'd IMO generally like to see some link to a bug report (that had gone unfixed), or a patch or PoC or something. As it stands, all this post seems to signal is: there's a bug; you found a bug; the maintainer knows about it; there is not much actionable to remedy the bug. It's not strictly wrong to post what you have but it's unusual and I am not sure who or what it helps. Am I missing something here? What was your intent with posting it at this stage?
Happy to share full details privately with anyone who needs them for triage (distro security teams, downstream maintainers, etc.) -- just reach out directly. Thanks, Sumit Chakraborty
thanks, sam
Attachment:
signature.asc
Description:
Current thread:
- libmspack: heap buffer overflow in make_decode_table() (Huffman decode table construction) -- CVE requested Sumit Chakraborty (Aug 16)
- Re: libmspack: heap buffer overflow in make_decode_table() (Huffman decode table construction) -- CVE requested Sam James (Aug 19)
