CVE-2026-46167

usb: usblp: fix uninitialized heap leak via LPGETSTATUS ioctl

MEDIUM
5.5
CVSS Score
Published: May 28, 2026 at 09:36 AM UTC
Updated: October 15, 2026 at 02:19 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.1%

Description

In the Linux kernel, the following vulnerability has been resolved: usb: usblp: fix uninitialized heap leak via LPGETSTATUS ioctl Just like in a previous problem in this driver, usblp_ctrl_msg() will collapse the usb_control_msg() return value to 0/-errno, discarding the actual number of bytes transferred. Ideally that short command should be detected and error out, but many printers are known to send "incorrect" responses back so we can't just do that. statusbuf is kmalloc(8) at probe time and never filled before the first LPGETSTATUS ioctl. usblp_read_status() requests 1 byte. If a malicious printer responds with zero bytes, *statusbuf is one byte of stale kmalloc heap, sign-extended into the local int status, which the LPGETSTATUS path then copy_to_user()s directly to the ioctl caller. Fix this all by just zapping out the memory buffer when allocated at probe time. If a later call does a short read, the data will be identical to what the device sent it the last time, so there is no "leak" of information happening.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

2.6.12.1 ≤ v < 5.10.2585.11 ≤ v < 5.15.2095.16 ≤ v < 6.1.1756.13 ≤ v < 6.18.306.19 ≤ v < 7.0.76.2 ≤ v < 6.6.1406.7 ≤ v < 6.12.881da177e4c3f41524e886b7f1b8a0c1fc7321cac22.6.122.6.12 rc22.6.12 rc32.6.12 rc42.6.12 rc57.17.1 rc17.1 rc2
Vendor states this is fixed in 087d97342c100138ea7d75a50977c9c2319f957b (fixed)
Vendor states this is fixed in 0f7c41314ebf17049917a452684db371babf711a (fixed)
Vendor states this is fixed in 6b0e7438e31c74b01514d31ff35c1e688c4baaba (fixed)
Vendor states this is fixed in 762a6ccf391db0d629e590a803a3a2231e17dd3f (fixed)
Vendor states this is fixed in a502b997668401a6821501fc98b7f9220f9b6ff2 (fixed)
Vendor states this is fixed in b38e53cbfb9d84732e5984fbd73e128d592415c5 (fixed)
Vendor states this is fixed in cf24991619be317e2769310b4a367bf4a04b82bc (fixed)
Vendor states this is fixed in d06d937b0a4cdb8867f04275c8100a8b943da31a (fixed)
Vendor states this is fixed in 2.6.12 (unaffected)
Vendor states this is fixed in 5.10.258 (unaffected)
Vendor states this is fixed in 5.15.209 (unaffected)
Vendor states this is fixed in 6.1.175 (unaffected)
Vendor states this is fixed in 6.12.88 (unaffected)
Vendor states this is fixed in 6.18.30 (unaffected)
Vendor states this is fixed in 6.6.140 (unaffected)
Vendor states this is fixed in 7.0.7 (unaffected)
Vendor states this is fixed in 7.1 (unaffected)

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusMODIFIED
CWE
CWE-908

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card