diff options
-rw-r--r-- | src/testbed/gnunet-service-testbed.c | 11 | ||||
-rw-r--r-- | src/testbed/gnunet-testbed-profiler.c | 7 | ||||
-rw-r--r-- | src/testbed/testbed_api.c | 6 |
3 files changed, 16 insertions, 8 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c index 44eb19e23b..d8d2661ccd 100644 --- a/src/testbed/gnunet-service-testbed.c +++ b/src/testbed/gnunet-service-testbed.c @@ -1479,12 +1479,15 @@ handle_add_host (void *cls, struct GNUNET_SERVER_Client *client, msg = (const struct GNUNET_TESTBED_AddHostMessage *) message; msize = ntohs (msg->header.size); - username = (char *) &(msg[1]); + 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; + username_length++; + /* msg must contain hostname */ + GNUNET_assert (msize > (sizeof (struct GNUNET_TESTBED_AddHostMessage) + + username_length + 1)); + if (0 != username_length) + GNUNET_assert ('\0' == username[username_length - 1]); hostname = username + username_length; hostname_length = msize - (sizeof (struct GNUNET_TESTBED_AddHostMessage) + username_length); diff --git a/src/testbed/gnunet-testbed-profiler.c b/src/testbed/gnunet-testbed-profiler.c index 4247bbebf4..0191580c43 100644 --- a/src/testbed/gnunet-testbed-profiler.c +++ b/src/testbed/gnunet-testbed-profiler.c @@ -252,14 +252,15 @@ register_hosts (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { static unsigned int reg_host; - register_hosts_task = GNUNET_SCHEDULER_NO_TASK; - if (reg_host == num_hosts) + register_hosts_task = GNUNET_SCHEDULER_NO_TASK; + if (reg_host == num_hosts - 1) { LOG (GNUNET_ERROR_TYPE_DEBUG, "All hosts successfully registered\n"); /* Start peer create task */ + return; } - reg_handle = GNUNET_TESTBED_register_host (mc, hosts[reg_host++], + reg_handle = GNUNET_TESTBED_register_host (mc, hosts[++reg_host], host_registration_completion, NULL); } diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c index 7cd536497b..053d730ffe 100644 --- a/src/testbed/testbed_api.c +++ b/src/testbed/testbed_api.c @@ -1780,9 +1780,13 @@ GNUNET_TESTBED_register_host (struct GNUNET_TESTBED_Controller *controller, msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_ADDHOST); msg->host_id = htonl (GNUNET_TESTBED_host_get_id_ (host)); msg->ssh_port = htons (GNUNET_TESTBED_host_get_ssh_port_ (host)); - msg->user_name_length = htons (user_name_length); if (NULL != username) + { + msg->user_name_length = htons (user_name_length - 1); memcpy (&msg[1], username, user_name_length); + } + else + msg->user_name_length = htons (user_name_length); strcpy (((void *) &msg[1]) + user_name_length, hostname); GNUNET_TESTBED_queue_message_ (controller, (struct GNUNET_MessageHeader *) msg); |