Hi!
From: Takashi Iwai tiwai@suse.de
commit 60849562a5db4a1eee2160167e4dce4590d3eafe upstream.
The previous addition of descriptor validation may lead to a NULL dereference at create_yamaha_midi_quirk() when either injd or outjd is NULL. Add proper non-NULL checks.
This is wrong.
@@ -259,8 +259,8 @@ static int create_yamaha_midi_quirk(stru NULL, USB_MS_MIDI_OUT_JACK); if (!injd && !outjd) return -ENODEV;
Clearly code wants to allow at most one of them to be NULL.
- if (!snd_usb_validate_midi_desc(injd) ||
!snd_usb_validate_midi_desc(outjd))
- if (!(injd && snd_usb_validate_midi_desc(injd)) ||
return -ENODEV;!(outjd && snd_usb_validate_midi_desc(outjd)))
Yet it will return here if it is. Correct check would be
+ if (!(!injd || snd_usb_validate_midi_desc(injd)) || + !(!outjd || snd_usb_validate_midi_desc(outjd)))
AFAICT.
Best regards, Pavel