diff options
author | Subhani Shaik <subhanis@codeaurora.org> | 2016-06-13 14:09:32 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-06-13 14:09:32 +0000 |
commit | 6443b7f3e1bc7e31fc83965be8ba76859e3c1997 (patch) | |
tree | 7668b09c027e1835123fc0f7a3f706c0d8eefb90 /qcwcn | |
parent | f5f75323a871f475ce62d2c002e600f59cc67134 (diff) | |
parent | 301f662f9d16a487f5ebb491b30a9c9ee0871348 (diff) | |
download | wlan-6443b7f3e1bc7e31fc83965be8ba76859e3c1997.tar.gz |
Wifi-HAL: Fix possible memory leak in llstats
am: 301f662f9d
Change-Id: Ife186fef4cfbf473456291f592e9172ce0fd2ed8
Diffstat (limited to 'qcwcn')
-rw-r--r-- | qcwcn/wifi_hal/llstats.cpp | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/qcwcn/wifi_hal/llstats.cpp b/qcwcn/wifi_hal/llstats.cpp index c0e72fb..419c3c0 100644 --- a/qcwcn/wifi_hal/llstats.cpp +++ b/qcwcn/wifi_hal/llstats.cpp @@ -1020,6 +1020,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) mResultsParams.radio_stat); if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } @@ -1033,7 +1038,7 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) case QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS: { struct nlattr *peerInfo; - wifi_iface_stat *pIfaceStat; + wifi_iface_stat *pIfaceStat = NULL; u32 numPeers, num_rates = 0; if (!tb_vendor[ QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS]) @@ -1098,9 +1103,12 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) } memset(pIfaceStat, 0, resultsBufSize); - if(mResultsParams.iface_stat) + if(mResultsParams.iface_stat) { memcpy ( pIfaceStat, mResultsParams.iface_stat, sizeof(wifi_iface_stat)); + free (mResultsParams.iface_stat); + mResultsParams.iface_stat = pIfaceStat; + } wifi_peer_info *pPeerStats; pIfaceStat->num_peers = numPeers; @@ -1132,9 +1140,6 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) goto cleanup; } } - if(mResultsParams.iface_stat) - free (mResultsParams.iface_stat); - mResultsParams.iface_stat = pIfaceStat; } // Number of Radios are 1 for now @@ -1143,6 +1148,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) mResultsParams.radio_stat); if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } @@ -1207,6 +1217,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply) cleanup: if(mResultsParams.radio_stat) { + if (mResultsParams.radio_stat->tx_time_per_levels) + { + free(mResultsParams.radio_stat->tx_time_per_levels); + mResultsParams.radio_stat->tx_time_per_levels = NULL; + } free(mResultsParams.radio_stat); mResultsParams.radio_stat = NULL; } |