diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-02-01 14:53:49 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-02-09 09:03:31 +0100 |
commit | 0981a260a1fe4a3f22cc70ef01ce38a73f548745 (patch) | |
tree | 0d9921010091f045bb937493e44649088c71ad02 /sound | |
parent | bc7320c5c8ddeb3b50c6a24013dab9ba74bce578 (diff) | |
download | linux-0981a260a1fe4a3f22cc70ef01ce38a73f548745.tar.gz linux-0981a260a1fe4a3f22cc70ef01ce38a73f548745.tar.bz2 linux-0981a260a1fe4a3f22cc70ef01ce38a73f548745.zip |
[ALSA] Fix possible invalid memory access in PCM core
snd_internval_list() may access invalid memory in the case count = 0
is given. It shouldn't be passed, but it'd better to make the code
a bit more robust.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/core/pcm_lib.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c index b336797be4fc..9fefcaa2c324 100644 --- a/sound/core/pcm_lib.c +++ b/sound/core/pcm_lib.c @@ -781,6 +781,11 @@ int snd_interval_list(struct snd_interval *i, unsigned int count, unsigned int * { unsigned int k; int changed = 0; + + if (!count) { + i->empty = 1; + return -EINVAL; + } for (k = 0; k < count; k++) { if (mask && !(mask & (1 << k))) continue; |