]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ASoC: 88pm860x: array overflow in snd_soc_put_volsw_2r_st()
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 13 Sep 2013 07:52:49 +0000 (10:52 +0300)
committerMark Brown <broonie@linaro.org>
Fri, 13 Sep 2013 17:36:39 +0000 (18:36 +0100)
This is called from snd_ctl_elem_write() with user supplied data so we
need to add some bounds checking.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Cc: stable@vger.kernel.org
sound/soc/codecs/88pm860x-codec.c

index 8af04343cc1ac9eab35fe951fd079fd1954da462..259d1ac4492fc610a1454567bdabd52f56dbae5a 100644 (file)
@@ -349,6 +349,9 @@ static int snd_soc_put_volsw_2r_st(struct snd_kcontrol *kcontrol,
        val = ucontrol->value.integer.value[0];
        val2 = ucontrol->value.integer.value[1];
 
+       if (val >= ARRAY_SIZE(st_table) || val2 >= ARRAY_SIZE(st_table))
+               return -EINVAL;
+
        err = snd_soc_update_bits(codec, reg, 0x3f, st_table[val].m);
        if (err < 0)
                return err;