summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunil Ravi <sunilravi@google.com>2022-04-06 05:05:14 -0700
committerSunil Ravi <sunilravi@google.com>2022-04-06 05:32:27 -0700
commit25c8c53725077d44607036f7da7d63854b829654 (patch)
tree17ef98e271d2342c87552fc19f3c4de69cfa0f2f
parent0286ec569929c8b12ee519f2286c7b33dfa6b8e8 (diff)
wifi: Fix for returning wrong radio combinations matrix
Allocate memory in heap for carrying radio combinations matrix from driver/firmware to wifi HAL. Bug: 225764376 Bug: 225762955 Test: atest WifiChipHidlTest Change-Id: I1049f7ab9f16a35a87b7cda34ba31797fde046e3
-rw-r--r--wifi/1.6/default/wifi_legacy_hal.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/wifi/1.6/default/wifi_legacy_hal.cpp b/wifi/1.6/default/wifi_legacy_hal.cpp
index 8a75fd83e3..bb8cf590d9 100644
--- a/wifi/1.6/default/wifi_legacy_hal.cpp
+++ b/wifi/1.6/default/wifi_legacy_hal.cpp
@@ -1549,13 +1549,14 @@ wifi_error WifiLegacyHal::setIndoorState(bool isIndoor) {
std::pair<wifi_error, wifi_radio_combination_matrix*>
WifiLegacyHal::getSupportedRadioCombinationsMatrix() {
- std::array<char, kMaxSupportedRadioCombinationsMatrixLength> buffer;
- buffer.fill(0);
+ char* buffer = new char[kMaxSupportedRadioCombinationsMatrixLength];
+ std::fill(buffer, buffer + kMaxSupportedRadioCombinationsMatrixLength, 0);
uint32_t size = 0;
wifi_radio_combination_matrix* radio_combination_matrix_ptr =
- reinterpret_cast<wifi_radio_combination_matrix*>(buffer.data());
+ reinterpret_cast<wifi_radio_combination_matrix*>(buffer);
wifi_error status = global_func_table_.wifi_get_supported_radio_combinations_matrix(
- global_handle_, buffer.size(), &size, radio_combination_matrix_ptr);
+ global_handle_, kMaxSupportedRadioCombinationsMatrixLength, &size,
+ radio_combination_matrix_ptr);
CHECK(size >= 0 && size <= kMaxSupportedRadioCombinationsMatrixLength);
return {status, radio_combination_matrix_ptr};
}