*
* Connection Manager
*
- * Copyright (C) 2007-2010 Intel Corporation. All rights reserved.
+ * Copyright (C) 2007-2012 Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
CONNMAN_PROVIDER_STATE_IDLE);
connman_provider_set_index(provider, -1);
- connman_provider_unref(data->provider);
- g_free(data->if_name);
- g_free(data);
+ if (data != NULL) {
+ connman_provider_unref(data->provider);
+ g_free(data->if_name);
+ g_free(data);
+ }
connman_task_destroy(task);
}
vpn_driver_data = g_hash_table_lookup(driver_hash, name);
- if (vpn_driver_data != NULL && vpn_driver_data->vpn_driver != NULL &&
- vpn_driver_data->vpn_driver->flags != VPN_FLAG_NO_TUN) {
+ if (vpn_driver_data == NULL || vpn_driver_data->vpn_driver == NULL) {
+ ret = -EINVAL;
+ goto exist_err;
+ }
+ if (vpn_driver_data->vpn_driver->flags != VPN_FLAG_NO_TUN) {
ret = vpn_create_tun(provider);
if (ret < 0)
goto exist_err;
return -ENOMEM;
}
- g_hash_table_insert(driver_hash, (char *)name, data);
+ g_hash_table_replace(driver_hash, (char *)name, data);
connman_provider_driver_register(&data->provider_driver);