forked from Minki/linux
V4L/DVB (3568b): saa7111: Prevent array overrun
Explicitely state the number of registers the SAA7111 has, and use that defined value where relevant. This should prevent any future array overrun like the one I just fixed in the saa7110 driver. This patch also saves 8 bytes of memory as a side effect, as the register cache was larger than needed. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
6254312352
commit
6eb5d9ca9f
@ -70,8 +70,10 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
#define SAA7111_NR_REG 0x18
|
||||
|
||||
struct saa7111 {
|
||||
unsigned char reg[32];
|
||||
unsigned char reg[SAA7111_NR_REG];
|
||||
|
||||
int norm;
|
||||
int input;
|
||||
@ -227,11 +229,11 @@ saa7111_command (struct i2c_client *client,
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 32; i += 16) {
|
||||
for (i = 0; i < SAA7111_NR_REG; i += 16) {
|
||||
int j;
|
||||
|
||||
printk(KERN_DEBUG "%s: %03x", I2C_NAME(client), i);
|
||||
for (j = 0; j < 16; ++j) {
|
||||
for (j = 0; j < 16 && i + j < SAA7111_NR_REG; ++j) {
|
||||
printk(" %02x",
|
||||
saa7111_read(client, i + j));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user