Commit 43d1eda3 authored by Takashi Iwai's avatar Takashi Iwai Committed by Luis Henriques

ALSA: info: Return error for invalid read/write

BugLink: http://bugs.launchpad.net/bugs/1642968

commit 6809cd68 upstream.

Currently the ALSA proc handler allows read or write even if the proc
file were write-only or read-only.  It's mostly harmless, does thing
but allocating memory and ignores the input/output.  But it doesn't
tell user about the invalid use, and it's confusing and inconsistent
in comparison with other proc files.

This patch adds some sanity checks and let the proc handler returning
an -EIO error when the invalid read/write is performed.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
parent 4981f188
...@@ -325,6 +325,8 @@ static ssize_t snd_info_text_entry_write(struct file *file, ...@@ -325,6 +325,8 @@ static ssize_t snd_info_text_entry_write(struct file *file,
size_t next; size_t next;
int err = 0; int err = 0;
if (!entry->c.text.write)
return -EIO;
pos = *offset; pos = *offset;
if (!valid_pos(pos, count)) if (!valid_pos(pos, count))
return -EIO; return -EIO;
...@@ -366,7 +368,9 @@ static int snd_info_seq_show(struct seq_file *seq, void *p) ...@@ -366,7 +368,9 @@ static int snd_info_seq_show(struct seq_file *seq, void *p)
struct snd_info_private_data *data = seq->private; struct snd_info_private_data *data = seq->private;
struct snd_info_entry *entry = data->entry; struct snd_info_entry *entry = data->entry;
if (entry->c.text.read) { if (!entry->c.text.read) {
return -EIO;
} else {
data->rbuffer->buffer = (char *)seq; /* XXX hack! */ data->rbuffer->buffer = (char *)seq; /* XXX hack! */
entry->c.text.read(entry, data->rbuffer); entry->c.text.read(entry, data->rbuffer);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment