- fixed string to address parsing
[oweals/gnunet.git] / src / ats / gnunet-service-ats_scheduling.c
index f5e286a643e96c62797c7dcb65170966553a4dcf..72b72cd3e11d9059fbf06076f0aada6bbe74ee7f 100644 (file)
@@ -240,12 +240,13 @@ GAS_handle_address_update (void *cls, struct GNUNET_SERVER_Client *client,
     plugin_name = &address[address_length];
   else
     plugin_name = "";
+
   if ((address_length + plugin_name_length +
        ats_count * sizeof (struct GNUNET_ATS_Information) +
        sizeof (struct AddressUpdateMessage) != ntohs (message->size)) ||
       (ats_count >
-       GNUNET_SERVER_MAX_MESSAGE_SIZE / sizeof (struct GNUNET_ATS_Information))
-      || (plugin_name[plugin_name_length - 1] != '\0'))
+       GNUNET_SERVER_MAX_MESSAGE_SIZE / sizeof (struct GNUNET_ATS_Information)) ||
+       ((plugin_name_length > 0) && (plugin_name[plugin_name_length - 1] != '\0')))
   {
     GNUNET_break (0);
     GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
@@ -299,7 +300,8 @@ GAS_handle_address_in_use (void *cls, struct GNUNET_SERVER_Client *client,
 
   if ((address_length + plugin_name_length +
        sizeof (struct AddressUseMessage) != ntohs (message->size)) ||
-      (plugin_name[plugin_name_length - 1] != '\0'))
+      ((plugin_name_length > 0) &&
+      (plugin_name[plugin_name_length - 1] != '\0')))
   {
     GNUNET_break (0);
     GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);