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:
Thomas Schmid 2020-01-15 23:31:12 +01:00 committed by Maureen Helm
commit 03e992a6b5

View file

@ -43,14 +43,15 @@ static void ms5607_compensate(struct ms5607_data *data,
* 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) {
Ti = (dT * dT) / (1ll << 31);
OFFi = (61ll * temp_sq) / (1ll << 4);
SENSi = 2ll * temp_sq;
if (data->temperature < -1500) {
temp_sq = (data->temperature + 1500) *
(data->temperature + 1500);
temp_sq = (s64_t)(data->temperature + 1500) *
(s64_t)(data->temperature + 1500);
OFFi += 15ll * temp_sq;
SENSi += 8ll * temp_sq;
}