gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r25623 - gnunet/src/lockmanager


From: gnunet
Subject: [GNUnet-SVN] r25623 - gnunet/src/lockmanager
Date: Fri, 21 Dec 2012 15:03:13 +0100

Author: grothoff
Date: 2012-12-21 15:03:13 +0100 (Fri, 21 Dec 2012)
New Revision: 25623

Modified:
   gnunet/src/lockmanager/gnunet-service-lockmanager.c
Log:
-quick and dirty use-after-free fix in LM

Modified: gnunet/src/lockmanager/gnunet-service-lockmanager.c
===================================================================
--- gnunet/src/lockmanager/gnunet-service-lockmanager.c 2012-12-21 13:36:42 UTC 
(rev 25622)
+++ gnunet/src/lockmanager/gnunet-service-lockmanager.c 2012-12-21 14:03:13 UTC 
(rev 25623)
@@ -718,6 +718,32 @@
 }
 
 
+static int
+stop_lock_attempt (void *cls,
+                  const struct GNUNET_HashCode *key,
+                  void *value)
+{
+  struct ClientList *cl_entry = cls;
+  struct Lock *lock = value;
+  struct WaitList *wl;
+  struct WaitList *next;
+
+  next = lock->wl_head;
+  while (NULL != (wl = next))
+  {
+    next = wl->next;
+    if (wl->cl_entry == cl_entry)
+    {
+      GNUNET_CONTAINER_DLL_remove (lock->wl_head,
+                                  lock->wl_tail,
+                                  wl);
+      GNUNET_free (wl);
+    }
+  }
+  return GNUNET_OK;
+}
+
+
 /**
  * Callback for client disconnect
  *
@@ -744,6 +770,9 @@
     cl_ll_remove_lock (cl_entry, ll_entry);
     process_lock_release (lock);
   }
+  GNUNET_CONTAINER_multihashmap_iterate (lock_map,
+                                        &stop_lock_attempt,
+                                        cl_entry);
   cl_remove_client (cl_entry);
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]