Fix mul-overflow when converting scan result's age from ms to us
wifi_cached_scan_result's age_ms is a u32, which may cause
mul-overflow when multiplied by 1000. Fix this by explicitly
converting the type to u64 before doing multiplication.
Bug: 387187200
Test: m
Change-Id: Idaeb7bf5185b776cdeddb18c83f1b5b32e8b68a2
diff --git a/wifi/aidl/default/aidl_struct_util.cpp b/wifi/aidl/default/aidl_struct_util.cpp
index 6bd5a7f..6de150e 100644
--- a/wifi/aidl/default/aidl_struct_util.cpp
+++ b/wifi/aidl/default/aidl_struct_util.cpp
@@ -3883,7 +3883,8 @@
return false;
}
*aidl_scan_result = {};
- aidl_scan_result->timeStampInUs = ts_us - legacy_scan_result.age_ms * 1000;
+ aidl_scan_result->timeStampInUs =
+ ts_us - (static_cast<uint64_t>(legacy_scan_result.age_ms) * 1000);
if (aidl_scan_result->timeStampInUs < 0) {
aidl_scan_result->timeStampInUs = 0;
return false;