gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

commit dc0da39a4d4a086b5286ae4705a3b96695d2f5f0
parent 1446d6a11597c0ef6b614b2759c704d37a0f759c
Author: Christian Grothoff <christian@grothoff.org>
Date:   Fri, 19 Dec 2014 13:33:26 +0000

-fix use after free

Diffstat:
Msrc/set/gnunet-service-set.c | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/set/gnunet-service-set.c b/src/set/gnunet-service-set.c @@ -469,6 +469,8 @@ handle_client_disconnect (void *cls, static void incoming_destroy (struct Operation *incoming) { + struct GNUNET_CADET_Channel *channel; + GNUNET_assert (GNUNET_YES == incoming->is_incoming); GNUNET_CONTAINER_DLL_remove (incoming_head, incoming_tail, @@ -490,10 +492,10 @@ incoming_destroy (struct Operation *incoming) GNUNET_MQ_destroy (incoming->mq); incoming->mq = NULL; } - if (NULL != incoming->channel) + if (NULL != (channel = incoming->channel)) { - GNUNET_CADET_channel_destroy (incoming->channel); incoming->channel = NULL; + GNUNET_CADET_channel_destroy (channel); } }