Commit 298e7538 authored by Junrui Luo's avatar Junrui Luo Committed by Takashi Iwai
Browse files

ALSA: firewire-motu: add bounds check in put_user loop for DSP events



In the DSP event handling code, a put_user() loop copies event data.
When the user buffer size is not aligned to 4 bytes, it could overwrite
beyond the buffer boundary.

Fix by adding a bounds check before put_user().

Suggested-by: default avatarTakashi Iwai <tiwai@suse.de>
Fixes: 634ec0b2 ("ALSA: firewire-motu: notify event for parameter change in register DSP model")
Signed-off-by: default avatarJunrui Luo <moonafterrain@outlook.com>
Link: https://patch.msgid.link/SYBPR01MB788112C72AF8A1C8C448B4B8AFA3A@SYBPR01MB7881.ausprd01.prod.outlook.com


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 9a97857d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ static long hwdep_read(struct snd_hwdep *hwdep, char __user *buf, long count,
		while (consumed < count &&
		       snd_motu_register_dsp_message_parser_copy_event(motu, &ev)) {
			ptr = (u32 __user *)(buf + consumed);
			if (put_user(ev, ptr))
			if (consumed + sizeof(ev) > count || put_user(ev, ptr))
				return -EFAULT;
			consumed += sizeof(ev);
		}