aboutsummaryrefslogtreecommitdiff
path: root/src/testbed
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-07-27 14:37:24 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-07-27 14:37:24 +0000
commitd98b1b8c9bb4669f00fbf51dc91f265ade9eb56d (patch)
tree9588df2060d3b963011f5c750f0c3a0c21eccc3f /src/testbed
parent804a827b19664dfef9dcf88faa2d17f740820209 (diff)
downloadgnunet-d98b1b8c9bb4669f00fbf51dc91f265ade9eb56d.tar.gz
gnunet-d98b1b8c9bb4669f00fbf51dc91f265ade9eb56d.zip
extensive message checking
Diffstat (limited to 'src/testbed')
-rw-r--r--src/testbed/gnunet-service-testbed.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c
index 5162c6a11..81ca312e0 100644
--- a/src/testbed/gnunet-service-testbed.c
+++ b/src/testbed/gnunet-service-testbed.c
@@ -884,27 +884,22 @@ handle_add_host (void *cls,
884 uint16_t username_length; 884 uint16_t username_length;
885 uint16_t hostname_length; 885 uint16_t hostname_length;
886 uint16_t reply_size; 886 uint16_t reply_size;
887 uint16_t msize;
887 888
888 msg = (const struct GNUNET_TESTBED_AddHostMessage *) message; 889 msg = (const struct GNUNET_TESTBED_AddHostMessage *) message;
889 username_length = ntohs (msg->user_name_length); 890 msize = ntohs (msg->header.size);
890 username_length = (0 == username_length) ? 0 : username_length + 1;
891 username = (char *) &(msg[1]); 891 username = (char *) &(msg[1]);
892 username_length = ntohs (msg->user_name_length);
893 GNUNET_assert (msize > (sizeof (struct GNUNET_TESTBED_AddHostMessage)
894 + username_length + 1)); /* msg must contain hostname */
895 if (0 != username_length)
896 GNUNET_assert ('\0' == username[username_length]);
897 username_length = (0 == username_length) ? 0 : username_length + 1;
892 hostname = username + username_length; 898 hostname = username + username_length;
893 if (ntohs (message->size) <= 899 hostname_length = msize - (sizeof (struct GNUNET_TESTBED_AddHostMessage)
894 (sizeof (struct GNUNET_TESTBED_AddHostMessage) + username_length)) 900 + username_length);
895 { 901 GNUNET_assert ('\0' == hostname[hostname_length - 1]);
896 GNUNET_break (0); 902 GNUNET_assert (strlen (hostname) == hostname_length - 1);
897 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
898 return;
899 }
900 hostname_length = ntohs (message->size)
901 - (sizeof (struct GNUNET_TESTBED_AddHostMessage) + username_length);
902 if (strlen (hostname) != hostname_length - 1)
903 {
904 GNUNET_break (0);
905 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
906 return;
907 }
908 host_id = ntohl (msg->host_id); 903 host_id = ntohl (msg->host_id);
909 LOG_DEBUG ("Received ADDHOST message\n"); 904 LOG_DEBUG ("Received ADDHOST message\n");
910 LOG_DEBUG ("-------host id: %u\n", host_id); 905 LOG_DEBUG ("-------host id: %u\n", host_id);