diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-07-27 14:37:24 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-07-27 14:37:24 +0000 |
commit | d98b1b8c9bb4669f00fbf51dc91f265ade9eb56d (patch) | |
tree | 9588df2060d3b963011f5c750f0c3a0c21eccc3f /src/testbed | |
parent | 804a827b19664dfef9dcf88faa2d17f740820209 (diff) | |
download | gnunet-d98b1b8c9bb4669f00fbf51dc91f265ade9eb56d.tar.gz gnunet-d98b1b8c9bb4669f00fbf51dc91f265ade9eb56d.zip |
extensive message checking
Diffstat (limited to 'src/testbed')
-rw-r--r-- | src/testbed/gnunet-service-testbed.c | 29 |
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); |