-fix use after free
authorChristian Grothoff <christian@grothoff.org>
Fri, 19 Dec 2014 13:33:26 +0000 (13:33 +0000)
committerChristian Grothoff <christian@grothoff.org>
Fri, 19 Dec 2014 13:33:26 +0000 (13:33 +0000)
src/set/gnunet-service-set.c

index ba89fbee41ab9068ade26c6880bd1f087907bacb..2291bd2f268212418b0836167334cb24de378900 100644 (file)
@@ -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);
   }
 }