gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r22947 - gnunet/src/testbed


From: gnunet
Subject: [GNUnet-SVN] r22947 - gnunet/src/testbed
Date: Fri, 27 Jul 2012 16:37:24 +0200

Author: harsha
Date: 2012-07-27 16:37:24 +0200 (Fri, 27 Jul 2012)
New Revision: 22947

Modified:
   gnunet/src/testbed/gnunet-service-testbed.c
Log:
extensive message checking

Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-07-27 14:07:36 UTC (rev 
22946)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-07-27 14:37:24 UTC (rev 
22947)
@@ -884,27 +884,22 @@
   uint16_t username_length;
   uint16_t hostname_length;
   uint16_t reply_size;
+  uint16_t msize;
   
   msg = (const struct GNUNET_TESTBED_AddHostMessage *) message;
-  username_length = ntohs (msg->user_name_length);
-  username_length = (0 == username_length) ? 0 : username_length + 1;
+  msize = ntohs (msg->header.size);
   username = (char *) &(msg[1]);
+  username_length = ntohs (msg->user_name_length);
+  GNUNET_assert (msize > (sizeof (struct GNUNET_TESTBED_AddHostMessage)
+                         + username_length + 1)); /* msg must contain hostname 
*/
+  if (0 != username_length)
+    GNUNET_assert ('\0' == username[username_length]);
+  username_length = (0 == username_length) ? 0 : username_length + 1;          
   
   hostname = username + username_length;
-  if (ntohs (message->size) <=
-      (sizeof (struct GNUNET_TESTBED_AddHostMessage) + username_length))
-  {
-    GNUNET_break (0);
-    GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
-    return;
-  }
-  hostname_length = ntohs (message->size)
-    - (sizeof (struct GNUNET_TESTBED_AddHostMessage) + username_length);
-  if (strlen (hostname) != hostname_length - 1)
-  {
-    GNUNET_break (0);
-    GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
-    return;
-  }
+  hostname_length = msize - (sizeof (struct GNUNET_TESTBED_AddHostMessage)
+                            + username_length);
+  GNUNET_assert ('\0' == hostname[hostname_length - 1]);
+  GNUNET_assert (strlen (hostname) == hostname_length - 1);
   host_id = ntohl (msg->host_id);
   LOG_DEBUG ("Received ADDHOST message\n");
   LOG_DEBUG ("-------host id: %u\n", host_id);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]