Fix multi-link llstat parsing in wifi legacy hal
Multi-link llstat parsing codes in wifi legacy hal, specifically
'copyLinkStat' and 'copyPeerInfo', pass the output container parameter
'std::vector<>' by value instead of by reference. The result is the
copied 'LinkStats' list and 'WifiPeerInfo' list are discarded when
'copyLinkStat' and 'copyPeerInfo' return. The empty links list are
passed to framework and fails validity check in Wi-Fi framework and
leads to system server crash.
Fix this issue by passing 'stats' and 'peers' by reference.
Bug: 269049672
Test: Manual Test with multi-link llstat implementation integrated
Change-Id: If8c366213af2ffcb9f7b3c904e1541ed0ac2fea4
diff --git a/wifi/aidl/default/wifi_legacy_hal.h b/wifi/aidl/default/wifi_legacy_hal.h
index a066ea6..146359d 100644
--- a/wifi/aidl/default/wifi_legacy_hal.h
+++ b/wifi/aidl/default/wifi_legacy_hal.h
@@ -782,8 +782,8 @@
// Handles wifi (error) status of Virtual interface create/delete
wifi_error handleVirtualInterfaceCreateOrDeleteStatus(const std::string& ifname,
wifi_error status);
- wifi_link_stat* copyLinkStat(wifi_link_stat* stat_ptr, std::vector<LinkStats> stats);
- wifi_peer_info* copyPeerInfo(wifi_peer_info* peer_ptr, std::vector<WifiPeerInfo> peers);
+ wifi_link_stat* copyLinkStat(wifi_link_stat* stat_ptr, std::vector<LinkStats>& stats);
+ wifi_peer_info* copyPeerInfo(wifi_peer_info* peer_ptr, std::vector<WifiPeerInfo>& peers);
// Global function table of legacy HAL.
wifi_hal_fn global_func_table_;