From ad0405a1745594aeab71beb52ee23bac6f514138 Mon Sep 17 00:00:00 2001 From: sr Date: Thu, 10 Jan 2013 12:32:44 +0100 Subject: [SERVER] Fix double-free/dangling pointer related to deleting a trusted namespace --- src/server/saveload.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/server/saveload.c b/src/server/saveload.c index 8c48304..51869b1 100644 --- a/src/server/saveload.c +++ b/src/server/saveload.c @@ -667,6 +667,10 @@ int dnbd3_add_trusted_namespace(dnbd3_trusted_server_t *server, char *namespace, /** * Remove trusted namespace from given trusted server. * !! Lock before calling this function !! + * @return TRUE if element could be removed + * !! Assume that the _trusted_servers list changed after calling this, + * since the trusted server gets removed from it if this was the last namespace + * it contained */ int dnbd3_del_trusted_namespace(dnbd3_trusted_server_t *server, char *namespace) { @@ -688,6 +692,7 @@ int dnbd3_del_trusted_namespace(dnbd3_trusted_server_t *server, char *namespace) if (server->namespaces == NULL) { g_free(server->comment); + _trusted_servers = g_slist_remove(_trusted_servers, server); free(server); } return TRUE; -- cgit v1.2.3-55-g7522