2015-02-24 19:52:38

by Ameen

[permalink] [raw]
Subject: [PATCH 2/2] cosa.c : Array index 'i' is used before limits check.

avoid out-of-bounds-read by checking count before indexing.

Signed-off-by: Ameen Ali <[email protected]>
---
drivers/net/wan/cosa.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
index 83c39e2..5252e21 100644
--- a/drivers/net/wan/cosa.c
+++ b/drivers/net/wan/cosa.c
@@ -376,7 +376,7 @@ static int __init cosa_init(void)
}
for (i=0; i<MAX_CARDS; i++)
cosa_cards[i].num = -1;
- for (i=0; io[i] != 0 && i < MAX_CARDS; i++)
+ for (i=0; (i < MAX_CARDS) && (io[i] != 0) ; i++)
cosa_probe(io[i], irq[i], dma[i]);
if (!nr_cards) {
pr_warn("no devices found\n");
--
2.1.0


2015-02-24 19:57:09

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 2/2] cosa.c : Array index 'i' is used before limits check.

Hello.

On 02/24/2015 10:52 PM, Ameen Ali wrote:

> avoid out-of-bounds-read by checking count before indexing.

> Signed-off-by: Ameen Ali <[email protected]>
> ---
> drivers/net/wan/cosa.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

> diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
> index 83c39e2..5252e21 100644
> --- a/drivers/net/wan/cosa.c
> +++ b/drivers/net/wan/cosa.c
> @@ -376,7 +376,7 @@ static int __init cosa_init(void)
> }
> for (i=0; i<MAX_CARDS; i++)
> cosa_cards[i].num = -1;
> - for (i=0; io[i] != 0 && i < MAX_CARDS; i++)
> + for (i=0; (i < MAX_CARDS) && (io[i] != 0) ; i++)

Parens you've added aren't necessary.
I suggest to add spaces after and before = in the first expression.

[...]

WBR, Sergei