fix 2 crashes in blacklisting api
authorMatthias Wachs <wachs@net.in.tum.de>
Wed, 1 Feb 2012 14:59:30 +0000 (14:59 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Wed, 1 Feb 2012 14:59:30 +0000 (14:59 +0000)
- client transmit handle was not sent to NULL after sending
- BlacklistMessage was not checked for NULL

src/transport/transport_api_blacklist.c

index b3fc79def3e73066fc0b81bd113fc83404b007d1..b1c536a9d66541c5d71dc7c4db4edd1d5beaddad 100644 (file)
@@ -103,7 +103,9 @@ query_handler (void *cls, const struct GNUNET_MessageHeader *msg)
   struct GNUNET_TRANSPORT_Blacklist *br = cls;
   const struct BlacklistMessage *bm;
 
-  if ((ntohs (msg->size) != sizeof (struct BlacklistMessage)) ||
+  GNUNET_assert (br != NULL);
+  if ((NULL == msg) ||
+      (ntohs (msg->size) != sizeof (struct BlacklistMessage)) ||
       (ntohs (msg->type) != GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_QUERY))
   {
     reconnect (br);
@@ -151,6 +153,7 @@ transmit_blacklist_init (void *cls, size_t size, void *buf)
   req.size = htons (sizeof (struct GNUNET_MessageHeader));
   req.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_INIT);
   memcpy (buf, &req, sizeof (req));
+  br->th = NULL;
   receive (br);
   return sizeof (req);
 }
@@ -201,6 +204,7 @@ transmit_blacklist_reply (void *cls, size_t size, void *buf)
   req.is_allowed = htonl (br->cb (br->cb_cls, &br->peer));
   req.peer = br->peer;
   memcpy (buf, &req, sizeof (req));
+  br->th = NULL;
   receive (br);
   return sizeof (req);
 }