drivers: sensor: ms5607: fix potential integer overlow
Fix potential integer overflow by making operands to multiplication wider. Fixes #21673 Signed-off-by: Thomas Schmid <tom@lfence.de>
This commit is contained in:
parent
010e35850e
commit
03e992a6b5
1 changed files with 4 additions and 3 deletions
|
@ -43,14 +43,15 @@ static void ms5607_compensate(struct ms5607_data *data,
|
||||||
* SECOND ORDER TEMPERATURE COMPENSATION
|
* SECOND ORDER TEMPERATURE COMPENSATION
|
||||||
*/
|
*/
|
||||||
|
|
||||||
temp_sq = (data->temperature - 2000) * (data->temperature - 2000);
|
temp_sq = (s64_t)(data->temperature - 2000) *
|
||||||
|
(s64_t)(data->temperature - 2000);
|
||||||
if (data->temperature < 2000) {
|
if (data->temperature < 2000) {
|
||||||
Ti = (dT * dT) / (1ll << 31);
|
Ti = (dT * dT) / (1ll << 31);
|
||||||
OFFi = (61ll * temp_sq) / (1ll << 4);
|
OFFi = (61ll * temp_sq) / (1ll << 4);
|
||||||
SENSi = 2ll * temp_sq;
|
SENSi = 2ll * temp_sq;
|
||||||
if (data->temperature < -1500) {
|
if (data->temperature < -1500) {
|
||||||
temp_sq = (data->temperature + 1500) *
|
temp_sq = (s64_t)(data->temperature + 1500) *
|
||||||
(data->temperature + 1500);
|
(s64_t)(data->temperature + 1500);
|
||||||
OFFi += 15ll * temp_sq;
|
OFFi += 15ll * temp_sq;
|
||||||
SENSi += 8ll * temp_sq;
|
SENSi += 8ll * temp_sq;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue