]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ALSA: usb-audio: Check endpoint numbers at parsing Scarlett2 mixer interfaces
authorTakashi Iwai <tiwai@suse.de>
Mon, 9 Mar 2026 10:46:27 +0000 (11:46 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 10 Mar 2026 08:33:57 +0000 (09:33 +0100)
The Scarlett2 mixer quirk in USB-audio driver may hit a NULL
dereference when a malformed USB descriptor is passed, since it
assumes the presence of an endpoint in the parsed interface in
scarlett2_find_fc_interface(), as reported by fuzzer.

For avoiding the NULL dereference, just add the sanity check of
bNumEndpoints and skip the invalid interface.

Reported-by: syzbot+8f29539ef9a1c8334f42@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/69acbbe1.050a0220.310d8.0001.GAE@google.com
Reported-by: syzbot+ae893a8901067fde2741@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/69acf72a.050a0220.310d8.0004.GAE@google.com
Cc: <stable@vger.kernel.org>
Link: https://patch.msgid.link/20260309104632.141895-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_scarlett2.c

index ef3150581eabdf92865c5e9f72b2e8acae813834..fd1fb668929a254117a6f4de056d86172bf592bc 100644 (file)
@@ -8251,6 +8251,8 @@ static int scarlett2_find_fc_interface(struct usb_device *dev,
 
                if (desc->bInterfaceClass != 255)
                        continue;
+               if (desc->bNumEndpoints < 1)
+                       continue;
 
                epd = get_endpoint(intf->altsetting, 0);
                private->bInterfaceNumber = desc->bInterfaceNumber;