2006-09-26 12:22:05

by Eric Sesterhenn

[permalink] [raw]
Subject: [Patch] Off-by-one in arch/arm/common/icst*

hi,

a quick find -iname \*.[ch] | xargs grep "> ARRAY_SIZE(", revealed
these in the icst drivers.
If i == ARRAY_SIZE, we get past the idx2s array.

Signed-off-by: Eric Sesterhenn <[email protected]>

--- linux-2.6.18-git5/arch/arm/common/icst307.c.orig 2006-09-26 14:17:06.000000000 +0200
+++ linux-2.6.18-git5/arch/arm/common/icst307.c 2006-09-26 14:17:40.000000000 +0200
@@ -57,7 +57,7 @@ icst307_khz_to_vco(const struct icst307_
break;
} while (i < ARRAY_SIZE(idx2s));

- if (i > ARRAY_SIZE(idx2s))
+ if (i >= ARRAY_SIZE(idx2s))
return vco;

vco.s = idx2s[i];
@@ -119,7 +119,7 @@ icst307_ps_to_vco(const struct icst307_p
break;
} while (i < ARRAY_SIZE(idx2s));

- if (i > ARRAY_SIZE(idx2s))
+ if (i >= ARRAY_SIZE(idx2s))
return vco;

vco.s = idx2s[i];
--- linux-2.6.18-git5/arch/arm/common/icst525.c.orig 2006-09-26 14:17:48.000000000 +0200
+++ linux-2.6.18-git5/arch/arm/common/icst525.c 2006-09-26 14:18:01.000000000 +0200
@@ -55,7 +55,7 @@ icst525_khz_to_vco(const struct icst525_
break;
} while (i < ARRAY_SIZE(idx2s));

- if (i > ARRAY_SIZE(idx2s))
+ if (i >= ARRAY_SIZE(idx2s))
return vco;

vco.s = idx2s[i];
@@ -118,7 +118,7 @@ icst525_ps_to_vco(const struct icst525_p
break;
} while (i < ARRAY_SIZE(idx2s));

- if (i > ARRAY_SIZE(idx2s))
+ if (i >= ARRAY_SIZE(idx2s))
return vco;

vco.s = idx2s[i];