[Top][All Lists]
[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r25623 - gnunet/src/lockmanager,
gnunet <=