turn: Don't access list node after freeing it
authorOlivier Crête <olivier.crete@collabora.com>
Sun, 30 Mar 2014 01:23:11 +0000 (21:23 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Sun, 30 Mar 2014 06:12:41 +0000 (02:12 -0400)
socket/turn.c

index 439a9dc..a3a920d 100644 (file)
@@ -493,8 +493,13 @@ priv_remove_peer_from_list (GList *list, const NiceAddress *peer)
     NiceAddress *address = (NiceAddress *) iter->data;
 
     if (nice_address_equal (address, peer)) {
+      GList *prev = iter->prev;
+
       nice_address_free (address);
       list = g_list_delete_link (list, iter);
+      iter = prev;
+      if (iter)
+        iter = list;
     }
   }