mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
ALSA: info: Return error for invalid read/write
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. Cc: <stable@vger.kernel.org> # v4.2+ Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
027a9fe683
commit
6809cd682b
@ -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;
|
||||||
@ -369,7 +371,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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user