Skip to content

Commit

Permalink
ALSA: seq: Fix OOB-reads from strlcpy
Browse files Browse the repository at this point in the history
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: Zubin Mithra <zsm@chromium.org>
Reviewed-by: Guenter Roeck <groeck@chromium.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Zubin Mithra authored and Takashi Iwai committed Apr 5, 2019
1 parent 8b030a5 commit 212ac18
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions sound/core/seq/seq_clientmgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1252,7 +1252,7 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,

/* fill the info fields */
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->event_lost = client_info->event_lost;
Expand Down Expand Up @@ -1530,7 +1530,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
/* set queue name */
if (!info->name[0])
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);

return 0;
Expand Down Expand Up @@ -1592,7 +1592,7 @@ static int snd_seq_ioctl_set_queue_info(struct snd_seq_client *client,
queuefree(q);
return -EPERM;
}
strlcpy(q->name, info->name, sizeof(q->name));
strscpy(q->name, info->name, sizeof(q->name));
queuefree(q);

return 0;
Expand Down

0 comments on commit 212ac18

Please sign in to comment.