summaryrefslogtreecommitdiff
path: root/plugins/vpn.c
diff options
context:
space:
mode:
authorJukka Rissanen <jukka.rissanen@linux.intel.com>2011-11-15 13:06:14 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-11-15 13:41:44 +0100
commitc75a3bd3b009b8894fa14d130709642d1bc0c8c6 (patch)
treeea4306819a6767c4af0f2f449b6cb86571c4029a /plugins/vpn.c
parent43365bffe9cd2f4b0364c3df808a49ffcfc31090 (diff)
downloadconnman-c75a3bd3b009b8894fa14d130709642d1bc0c8c6.tar.gz
connman-c75a3bd3b009b8894fa14d130709642d1bc0c8c6.tar.bz2
connman-c75a3bd3b009b8894fa14d130709642d1bc0c8c6.zip
vpn: Add null checks
Diffstat (limited to 'plugins/vpn.c')
-rw-r--r--plugins/vpn.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/plugins/vpn.c b/plugins/vpn.c
index 7d55d812..226fabe7 100644
--- a/plugins/vpn.c
+++ b/plugins/vpn.c
@@ -78,6 +78,9 @@ static int stop_vpn(struct connman_provider *provider)
return -EINVAL;
name = connman_provider_get_driver_name(provider);
+ if (name == NULL)
+ return -EINVAL;
+
vpn_driver_data = g_hash_table_lookup(driver_hash, name);
if (vpn_driver_data != NULL && vpn_driver_data->vpn_driver != NULL &&
@@ -137,10 +140,12 @@ void vpn_died(struct connman_task *task, int exit_code, void *user_data)
vpn_exit:
if (state != VPN_STATE_READY && state != VPN_STATE_DISCONNECT) {
const char *name;
- struct vpn_driver_data *vpn_data;
+ struct vpn_driver_data *vpn_data = NULL;
name = connman_provider_get_driver_name(provider);
- vpn_data = g_hash_table_lookup(driver_hash, name);
+ if (name != NULL)
+ vpn_data = g_hash_table_lookup(driver_hash, name);
+
if (vpn_data != NULL &&
vpn_data->vpn_driver->error_code != NULL)
ret = vpn_data->vpn_driver->error_code(exit_code);
@@ -209,6 +214,9 @@ static void vpn_notify(struct connman_task *task,
data = connman_provider_get_data(provider);
name = connman_provider_get_driver_name(provider);
+ if (name == NULL)
+ return;
+
vpn_driver_data = g_hash_table_lookup(driver_hash, name);
if (vpn_driver_data == NULL)
return;
@@ -331,6 +339,9 @@ static int vpn_connect(struct connman_provider *provider)
connman_provider_set_data(provider, data);
name = connman_provider_get_driver_name(provider);
+ if (name == NULL)
+ return -EINVAL;
+
vpn_driver_data = g_hash_table_lookup(driver_hash, name);
if (vpn_driver_data != NULL && vpn_driver_data->vpn_driver != NULL &&
@@ -401,6 +412,9 @@ static int vpn_disconnect(struct connman_provider *provider)
return 0;
name = connman_provider_get_driver_name(provider);
+ if (name == NULL)
+ return 0;
+
vpn_driver_data = g_hash_table_lookup(driver_hash, name);
if (vpn_driver_data->vpn_driver->disconnect)
vpn_driver_data->vpn_driver->disconnect();