diff mbox series

[1/2] ALSA: ump: Don't accept an invalid UMP protocol number

Message ID 20240529094515.12666-1-tiwai@suse.de (mailing list archive)
State Superseded
Headers show
Series [1/2] ALSA: ump: Don't accept an invalid UMP protocol number | expand

Commit Message

Takashi Iwai May 29, 2024, 9:45 a.m. UTC
When a UMP Stream Configuration message is received, the driver tries
to switch the protocol, but there was no sanity check of the protocol,
hence it can pass an invalid value.  Add the check and bail out if a
wrong value is passed.

Fixes: a79807683781 ("ALSA: ump: Add helper to change MIDI protocol")
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/core/ump.c | 6 ++++++
 1 file changed, 6 insertions(+)
diff mbox series

Patch

diff --git a/sound/core/ump.c b/sound/core/ump.c
index fd6a68a54278..5bd7b77acb95 100644
--- a/sound/core/ump.c
+++ b/sound/core/ump.c
@@ -685,10 +685,16 @@  static void seq_notify_protocol(struct snd_ump_endpoint *ump)
  */
 int snd_ump_switch_protocol(struct snd_ump_endpoint *ump, unsigned int protocol)
 {
+	unsigned int type;
+
 	protocol &= ump->info.protocol_caps;
 	if (protocol == ump->info.protocol)
 		return 0;
 
+	if (type != SNDRV_UMP_EP_INFO_PROTO_MIDI1 &&
+	    type != SNDRV_UMP_EP_INFO_PROTO_MIDI2)
+		return 0;
+
 	ump->info.protocol = protocol;
 	ump_dbg(ump, "New protocol = %x (caps = %x)\n",
 		protocol, ump->info.protocol_caps);