summaryrefslogtreecommitdiff
path: root/qcwcn
diff options
context:
space:
mode:
authorSubhani Shaik <subhanis@codeaurora.org>2016-06-13 14:09:32 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-13 14:09:32 +0000
commit6443b7f3e1bc7e31fc83965be8ba76859e3c1997 (patch)
tree7668b09c027e1835123fc0f7a3f706c0d8eefb90 /qcwcn
parentf5f75323a871f475ce62d2c002e600f59cc67134 (diff)
parent301f662f9d16a487f5ebb491b30a9c9ee0871348 (diff)
downloadwlan-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.cpp25
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;
}