[alsa-devel] [PATCH] ASoC: cs42l52: Fix off-by-one boundary checking for cs42l52_get_clk()
The caller uses the return value of cs42l52_get_clk as array index, the valid array index is 0 .. ARRAY_SIZE(clk_map_table) - 1. Thus we need to ensure ret is less than ARRAY_SIZE(clk_map_table).
Signed-off-by: Axel Lin axel.lin@ingics.com --- sound/soc/codecs/cs42l52.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c index 99bb1c6..66817f6 100644 --- a/sound/soc/codecs/cs42l52.c +++ b/sound/soc/codecs/cs42l52.c @@ -749,7 +749,7 @@ static int cs42l52_get_clk(int mclk, int rate) } } } - if (ret > ARRAY_SIZE(clk_map_table)) + if (ret >= ARRAY_SIZE(clk_map_table)) return -EINVAL; return ret; }
2012/12/16 Axel Lin axel.lin@ingics.com
The caller uses the return value of cs42l52_get_clk as array index, the valid array index is 0 .. ARRAY_SIZE(clk_map_table) - 1. Thus we need to ensure ret is less than ARRAY_SIZE(clk_map_table).
Just check the code again, ret is always less than ARRAY_SIZE -1. I think what we missed here is the case no rate is matched.
Axel
participants (1)
-
Axel Lin