summaryrefslogtreecommitdiffstats
path: root/sound/core
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-02-01 14:53:49 +0100
committerJaroslav Kysela <perex@suse.cz>2007-02-09 09:03:31 +0100
commit0981a260a1fe4a3f22cc70ef01ce38a73f548745 (patch)
tree0d9921010091f045bb937493e44649088c71ad02 /sound/core
parentbc7320c5c8ddeb3b50c6a24013dab9ba74bce578 (diff)
downloadlinux-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/core')
-rw-r--r--sound/core/pcm_lib.c5
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;