aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_validation.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-08-25 11:13:37 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-08-25 11:13:37 +0000
commit001efb2ba11fbbbeb5e340d091ccc5b1756e362b (patch)
treef963599b3c928a591e5383d7b513ec694b0676c3 /src/transport/gnunet-service-transport_validation.c
parente0d1527b589a41c03887754ae8e9abedf1716d45 (diff)
downloadgnunet-001efb2ba11fbbbeb5e340d091ccc5b1756e362b.tar.gz
gnunet-001efb2ba11fbbbeb5e340d091ccc5b1756e362b.zip
fix:
- correct message size - correct strlen
Diffstat (limited to 'src/transport/gnunet-service-transport_validation.c')
-rw-r--r--src/transport/gnunet-service-transport_validation.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 9a3914814..c6ee515fe 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -609,7 +609,7 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender,
609 return; 609 return;
610 } 610 }
611 addrend++; 611 addrend++;
612 slen = strlen (addr); 612 slen = strlen (addr) + 1;
613 alen -= slen; 613 alen -= slen;
614 614
615 if (GNUNET_YES != 615 if (GNUNET_YES !=
@@ -731,15 +731,17 @@ transmit_ping_if_allowed (void *cls, const struct GNUNET_PeerIdentity *pid,
731 ve->bc = NULL; 731 ve->bc = NULL;
732 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmitting plain PING to `%s'\n", 732 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmitting plain PING to `%s'\n",
733 GNUNET_i2s (pid)); 733 GNUNET_i2s (pid));
734 ping.header.size = htons (sizeof (struct TransportPingMessage));
735 ping.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_PING);
736 ping.challenge = htonl (ve->challenge);
737 ping.target = *pid;
738 734
739 slen = strlen (ve->transport_name) + 1; 735 slen = strlen (ve->transport_name) + 1;
740 hello = GST_hello_get (); 736 hello = GST_hello_get ();
741 hsize = ntohs (hello->size); 737 hsize = ntohs (hello->size);
742 tsize = sizeof (struct TransportPingMessage) + ve->addrlen + slen + hsize; 738 tsize = sizeof (struct TransportPingMessage) + ve->addrlen + slen + hsize;
739
740 ping.header.size = htons (sizeof (struct TransportPingMessage) + ve->addrlen + slen);
741 ping.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_PING);
742 ping.challenge = htonl (ve->challenge);
743 ping.target = *pid;
744
743 if (tsize >= GNUNET_SERVER_MAX_MESSAGE_SIZE) 745 if (tsize >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
744 { 746 {
745 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 747 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -753,6 +755,8 @@ transmit_ping_if_allowed (void *cls, const struct GNUNET_PeerIdentity *pid,
753 { 755 {
754 char message_buf[tsize]; 756 char message_buf[tsize];
755 757
758 /* build message with structure:
759 * [HELLO][TransportPingMessage][Transport name][Address] */
756 memcpy (message_buf, hello, hsize); 760 memcpy (message_buf, hello, hsize);
757 memcpy (&message_buf[hsize], &ping, sizeof (struct TransportPingMessage)); 761 memcpy (&message_buf[hsize], &ping, sizeof (struct TransportPingMessage));
758 memcpy (&message_buf[sizeof (struct TransportPingMessage) + hsize], 762 memcpy (&message_buf[sizeof (struct TransportPingMessage) + hsize],