Fix derefrencing of NULL pointer
[platform/upstream/connman.git] / src / peer.c
old mode 100644 (file)
new mode 100755 (executable)
index 340cbcc..2102f11
@@ -82,7 +82,7 @@ static void stop_dhcp_server(struct connman_peer *peer)
        peer->dhcp_server = NULL;
 
        if (peer->ip_pool)
-               __connman_ippool_unref(peer->ip_pool);
+               __connman_ippool_free(peer->ip_pool);
        peer->ip_pool = NULL;
        peer->lease_ip = 0;
 }
@@ -606,6 +606,9 @@ static int peer_connect(struct connman_peer *peer)
 {
        int err = -ENOTSUP;
 
+       if (is_connected(peer))
+               return -EISCONN;
+
        if (peer_driver->connect)
                err = peer_driver->connect(peer,
                                        CONNMAN_PEER_WPS_UNKNOWN, NULL);
@@ -1177,6 +1180,18 @@ const char *__connman_peer_get_path(struct connman_peer *peer)
        return peer->path;
 }
 
+static void disconnect_peer_hash_table(gpointer key,
+                                       gpointer value, gpointer user_data)
+{
+       struct connman_peer *peer = value;
+       peer_disconnect(peer);
+}
+
+void __connman_peer_disconnect_all(void)
+{
+       g_hash_table_foreach(peers_table, disconnect_peer_hash_table, NULL);
+}
+
 int __connman_peer_init(void)
 {
        DBG("");