aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_validation.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-07-25 12:10:20 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-07-25 12:10:20 +0000
commit233edaa14c05faf5fd398f57ca081269de0a9948 (patch)
tree30be32b408dfdc2ecc977ed7747ed62fad430604 /src/transport/gnunet-service-transport_validation.c
parentd00449dd546eacf2bb2e20f2103a21e793288913 (diff)
downloadgnunet-233edaa14c05faf5fd398f57ca081269de0a9948.tar.gz
gnunet-233edaa14c05faf5fd398f57ca081269de0a9948.zip
- coverity 10070
Diffstat (limited to 'src/transport/gnunet-service-transport_validation.c')
-rw-r--r--src/transport/gnunet-service-transport_validation.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c
index 40f57562a..4dadc0f34 100644
--- a/src/transport/gnunet-service-transport_validation.c
+++ b/src/transport/gnunet-service-transport_validation.c
@@ -819,7 +819,7 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender,
819 sig_cache = NULL; 819 sig_cache = NULL;
820 sig_cache_exp = NULL; 820 sig_cache_exp = NULL;
821 821
822 if (0 < alen) 822 if (alen > 0)
823 { 823 {
824 addrend = memchr (addr, '\0', alen); 824 addrend = memchr (addr, '\0', alen);
825 if (NULL == addrend) 825 if (NULL == addrend)
@@ -890,6 +890,9 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender,
890 GNUNET_h2s (&GST_my_identity.hashPubKey), 890 GNUNET_h2s (&GST_my_identity.hashPubKey),
891 GNUNET_i2s (sender)); 891 GNUNET_i2s (sender));
892 892
893 /* message with structure:
894 * [TransportPongMessage][Transport name][Address] */
895
893 pong = GNUNET_malloc (sizeof (struct TransportPongMessage) + alen + slen); 896 pong = GNUNET_malloc (sizeof (struct TransportPongMessage) + alen + slen);
894 pong->header.size = 897 pong->header.size =
895 htons (sizeof (struct TransportPongMessage) + alen + slen); 898 htons (sizeof (struct TransportPongMessage) + alen + slen);
@@ -931,7 +934,11 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender,
931 else 934 else
932 { 935 {
933#endif 936#endif
934 memcpy (&((char *) &pong[1])[slen], addrend, alen); 937 if (alen > 0)
938 {
939 GNUNET_assert (NULL != addrend);
940 memcpy (&((char *) &pong[1])[slen], addrend, alen);
941 }
935 if (GNUNET_TIME_absolute_get_remaining (*sig_cache_exp).rel_value < 942 if (GNUNET_TIME_absolute_get_remaining (*sig_cache_exp).rel_value <
936 PONG_SIGNATURE_LIFETIME.rel_value / 4) 943 PONG_SIGNATURE_LIFETIME.rel_value / 4)
937 { 944 {
@@ -1101,6 +1108,9 @@ GST_validation_handle_pong (const struct GNUNET_PeerIdentity *sender,
1101 gettext_noop ("# PONG messages received"), 1, 1108 gettext_noop ("# PONG messages received"), 1,
1102 GNUNET_NO); 1109 GNUNET_NO);
1103 1110
1111 /* message with structure:
1112 * [TransportPongMessage][Transport name][Address] */
1113
1104 pong = (const struct TransportPongMessage *) hdr; 1114 pong = (const struct TransportPongMessage *) hdr;
1105 tname = (const char *) &pong[1]; 1115 tname = (const char *) &pong[1];
1106 size = ntohs (hdr->size) - sizeof (struct TransportPongMessage); 1116 size = ntohs (hdr->size) - sizeof (struct TransportPongMessage);