diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-07-25 12:10:20 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-07-25 12:10:20 +0000 |
commit | 233edaa14c05faf5fd398f57ca081269de0a9948 (patch) | |
tree | 30be32b408dfdc2ecc977ed7747ed62fad430604 /src/transport/gnunet-service-transport_validation.c | |
parent | d00449dd546eacf2bb2e20f2103a21e793288913 (diff) | |
download | gnunet-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.c | 14 |
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); |