diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2011-11-15 13:06:14 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2011-11-15 13:41:44 +0100 |
commit | c75a3bd3b009b8894fa14d130709642d1bc0c8c6 (patch) | |
tree | ea4306819a6767c4af0f2f449b6cb86571c4029a /plugins/vpn.c | |
parent | 43365bffe9cd2f4b0364c3df808a49ffcfc31090 (diff) | |
download | connman-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.c | 18 |
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(); |