summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh <l.kasana@samsung.com>2019-02-18 15:33:04 +0530
committerLokesh <l.kasana@samsung.com>2019-02-18 15:54:34 +0530
commit9213fac0850e963c7c14a392e6c64792bb099e9d (patch)
treec6a2990810c3c002497c212aba447a46b419f126
parent59296a074abb449c3a939d1effb4cacef14d79e0 (diff)
downloadconnman-submit/tizen/20190218.125443.tar.gz
connman-submit/tizen/20190218.125443.tar.bz2
connman-submit/tizen/20190218.125443.zip
Fix the dangling pointer(network) inside autosignalpoll_timeout().submit/tizen/20190218.125443accepted/tizen/unified/20190219.154224
Change-Id: I47d74342b861db29c2b36094539a84b73dce7e55 Signed-off-by: Lokesh <l.kasana@samsung.com>
-rw-r--r--packaging/connman.spec2
-rw-r--r--plugins/wifi.c21
2 files changed, 14 insertions, 9 deletions
diff --git a/packaging/connman.spec b/packaging/connman.spec
index e5e1b0e0..961f3ee4 100644
--- a/packaging/connman.spec
+++ b/packaging/connman.spec
@@ -5,7 +5,7 @@
Name: connman
Version: 1.35
-Release: 30
+Release: 31
License: GPL-2.0+
Summary: Connection Manager
Url: http://connman.net
diff --git a/plugins/wifi.c b/plugins/wifi.c
index 71727e69..9b2e9e12 100644
--- a/plugins/wifi.c
+++ b/plugins/wifi.c
@@ -3535,20 +3535,21 @@ static int network_signalpoll(struct connman_network *network)
static gboolean autosignalpoll_timeout(gpointer data)
{
- struct connman_network *network = data;
- int ret = 0;
+ if (!automaxspeed_timeout) {
+ DBG("automaxspeed_timeout is found to be zero. i.e. currently in disconnected state. !!");
+ return FALSE;
+ }
- automaxspeed_timeout = 0;
- ret = network_signalpoll(network);
+ struct connman_network *network = data;
+ int ret = network_signalpoll(network);
if (ret < 0) {
DBG("Fail to get max speed !!");
+ automaxspeed_timeout = 0;
return FALSE;
}
- automaxspeed_timeout = g_timeout_add_seconds(30, autosignalpoll_timeout, network);
-
- return FALSE;
+ return TRUE;
}
#endif
@@ -3904,7 +3905,11 @@ static void interface_state(GSupplicantInterface *interface)
if (!automaxspeed_timeout) {
DBG("Going to start signalpoll timer!!");
- autosignalpoll_timeout(network);
+ int ret = network_signalpoll(network);
+ if (ret < 0)
+ DBG("Fail to get max speed !!");
+ else
+ automaxspeed_timeout = g_timeout_add_seconds(30, autosignalpoll_timeout, network);
}
#else
/* though it should be already stopped: */