hwmon: (ads1015) Fix out-of-bounds array access
PATCH 1/2 hwmon: (ads1015) Fix out-of-bounds array access
Current code uses data_rate as array index in ads1015_read_adc() and uses pga as array index in ads1015_reg_to_mv, so we must make sure both data_rate and pga settings are in valid value range. If the setting is out-of-range, don't apply it.
--- drivers/hwmon/ads1015.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/hwmon/ads1015.c +2 -0
@@ -212,6 +212,7 @@ static int ads1015_get_channels_config_of(struct i2c_client *client)dev_err (&client->dev,"invalid gain on %s\n" , node->full_name); +continue ; } }
@@ -222,6 +223,7 @@ static int ads1015_get_channels_config_of(struct i2c_client *client)dev_err (&client->dev,"invalid data_rate on %s\n" , node->full_name); +continue ; } }
Signature · 9 lines
1.9.1 _______________________________________________ lm-sensors mailing list [email protected] http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
2014-08-01 10:03 GMT+08:00 Axel Lin <[email protected]>:
Quoted 4 lines
Current code uses
data_rateas array index inads1015_read_adc()and uses pga as array index inads1015_reg_to_mv, so we must make sure bothdata_rateand pga settings are in valid value range. If the setting is out-of-range, don't apply it.
Or maybe it's better to use the default settings instead if the setting is out of range? comments?
drivers/hwmon/ads1015.c +0 -0
@@ -212,6 +212,7 @@ static int ads1015_get_channels_config_of(struct
i2c_client *client)
dev_err(&client->dev,
"invalid gain on %s\n",
node->full_name);
+ pga = ADS1015_DEFAULT_PGA;
}
}
@@ -222,6 +223,7 @@ static int ads1015_get_channels_config_of(struct i2c_client *client)
dev_err(&client->dev,
"invalid data_rate on %s\n",
node->full_name);
+ data_rate = ADS1015_DEFAULT_DATA_RATE;
}
}
_______________________________________________
lm-sensors mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors