提交 d42acc83 编写于 作者: Z Zubin Mithra 提交者: Xie XiuQi

ALSA: seq: Fix OOB-reads from strlcpy

commit 212ac181c158c09038c474ba68068be49caecebb upstream.

When ioctl calls are made with non-null-terminated userspace strings,
strlcpy causes an OOB-read from within strlen. Fix by changing to use
strscpy instead.
Signed-off-by: NZubin Mithra <zsm@chromium.org>
Reviewed-by: NGuenter Roeck <groeck@chromium.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
上级 c2edd9c3
...@@ -1252,7 +1252,7 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client, ...@@ -1252,7 +1252,7 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,
/* fill the info fields */ /* fill the info fields */
if (client_info->name[0]) if (client_info->name[0])
strlcpy(client->name, client_info->name, sizeof(client->name)); strscpy(client->name, client_info->name, sizeof(client->name));
client->filter = client_info->filter; client->filter = client_info->filter;
client->event_lost = client_info->event_lost; client->event_lost = client_info->event_lost;
...@@ -1530,7 +1530,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg) ...@@ -1530,7 +1530,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
/* set queue name */ /* set queue name */
if (!info->name[0]) if (!info->name[0])
snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue); snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue);
strlcpy(q->name, info->name, sizeof(q->name)); strscpy(q->name, info->name, sizeof(q->name));
snd_use_lock_free(&q->use_lock); snd_use_lock_free(&q->use_lock);
return 0; return 0;
...@@ -1592,7 +1592,7 @@ static int snd_seq_ioctl_set_queue_info(struct snd_seq_client *client, ...@@ -1592,7 +1592,7 @@ static int snd_seq_ioctl_set_queue_info(struct snd_seq_client *client,
queuefree(q); queuefree(q);
return -EPERM; return -EPERM;
} }
strlcpy(q->name, info->name, sizeof(q->name)); strscpy(q->name, info->name, sizeof(q->name));
queuefree(q); queuefree(q);
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册