diff options
author | Julius Bünger <buenger@mytum.de> | 2015-02-17 14:04:44 +0000 |
---|---|---|
committer | Julius Bünger <buenger@mytum.de> | 2015-02-17 14:04:44 +0000 |
commit | 0ea0ba9874d6252da26a2ae20090ffe095559cf9 (patch) | |
tree | cc4ed323066f9f5d63c0c2969fa11108537ab543 /src | |
parent | b09e38d61b47755964855e572ee87ffe01848ceb (diff) | |
download | gnunet-0ea0ba9874d6252da26a2ae20090ffe095559cf9.tar.gz gnunet-0ea0ba9874d6252da26a2ae20090ffe095559cf9.zip |
- fixed memory and coding issues
Diffstat (limited to 'src')
-rw-r--r-- | src/rps/gnunet-service-rps.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c index 0ec80d3a4..3d61de21b 100644 --- a/src/rps/gnunet-service-rps.c +++ b/src/rps/gnunet-service-rps.c | |||
@@ -1065,39 +1065,51 @@ handle_client_seed (void *cls, | |||
1065 | { | 1065 | { |
1066 | struct GNUNET_RPS_CS_SeedMessage *in_msg; | 1066 | struct GNUNET_RPS_CS_SeedMessage *in_msg; |
1067 | struct GNUNET_PeerIdentity *peers; | 1067 | struct GNUNET_PeerIdentity *peers; |
1068 | uint32_t num_peers; | ||
1068 | uint32_t i; | 1069 | uint32_t i; |
1069 | 1070 | ||
1070 | if (sizeof (struct GNUNET_RPS_CS_SeedMessage) < ntohs (message->size)) | 1071 | if (sizeof (struct GNUNET_RPS_CS_SeedMessage) > ntohs (message->size)) |
1071 | { | 1072 | { |
1072 | GNUNET_break_op (0); | 1073 | GNUNET_break_op (0); |
1073 | GNUNET_SERVER_receive_done (client, | 1074 | GNUNET_SERVER_receive_done (client, |
1074 | GNUNET_SYSERR); | 1075 | GNUNET_SYSERR); |
1075 | } | 1076 | } |
1077 | |||
1076 | in_msg = (struct GNUNET_RPS_CS_SeedMessage *) message; | 1078 | in_msg = (struct GNUNET_RPS_CS_SeedMessage *) message; |
1079 | num_peers = ntohl (in_msg->num_peers); | ||
1080 | peers = (struct GNUNET_PeerIdentity *) &in_msg[1]; | ||
1081 | //peers = GNUNET_new_array (num_peers, struct GNUNET_PeerIdentity); | ||
1082 | //memcpy (peers, &in_msg[1], num_peers * sizeof (struct GNUNET_PeerIdentity)); | ||
1083 | |||
1077 | if ((ntohs (message->size) - sizeof (struct GNUNET_RPS_CS_SeedMessage)) / | 1084 | if ((ntohs (message->size) - sizeof (struct GNUNET_RPS_CS_SeedMessage)) / |
1078 | sizeof (struct GNUNET_PeerIdentity) != ntohl (in_msg->num_peers)) | 1085 | sizeof (struct GNUNET_PeerIdentity) != num_peers) |
1079 | { | 1086 | { |
1080 | GNUNET_break_op (0); | 1087 | GNUNET_break_op (0); |
1081 | GNUNET_SERVER_receive_done (client, | 1088 | GNUNET_SERVER_receive_done (client, |
1082 | GNUNET_SYSERR); | 1089 | GNUNET_SYSERR); |
1083 | } | 1090 | } |
1084 | 1091 | ||
1085 | in_msg = (struct GNUNET_RPS_CS_SeedMessage *) message; | ||
1086 | peers = (struct GNUNET_PeerIdentity *) &message[1]; | ||
1087 | |||
1088 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1092 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1089 | "Client seeded peers:\n"); | 1093 | "Client seeded peers:\n"); |
1090 | print_peer_list (peers, ntohl (in_msg->num_peers)); | 1094 | print_peer_list (peers, num_peers); |
1095 | |||
1096 | // TODO check for validity of ids | ||
1091 | 1097 | ||
1092 | for ( i = 0 ; i < ntohl (in_msg->num_peers) ; i++ ) | 1098 | for (i = 0 ; i < num_peers ; i++) |
1099 | { | ||
1093 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 1100 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
1094 | "Updating samplers with seed %" PRIX32 ": %s\n", | 1101 | "Updating samplers with seed %" PRIX32 ": %s\n", |
1102 | i, | ||
1095 | GNUNET_i2s (&peers[i])); | 1103 | GNUNET_i2s (&peers[i])); |
1104 | |||
1096 | RPS_sampler_update (prot_sampler, &peers[i]); | 1105 | RPS_sampler_update (prot_sampler, &peers[i]); |
1097 | RPS_sampler_update (client_sampler, &peers[i]); | 1106 | RPS_sampler_update (client_sampler, &peers[i]); |
1107 | } | ||
1108 | |||
1109 | //GNUNET_free (peers); | ||
1098 | 1110 | ||
1099 | GNUNET_SERVER_receive_done (client, | 1111 | GNUNET_SERVER_receive_done (client, |
1100 | GNUNET_OK); | 1112 | GNUNET_OK); |
1101 | } | 1113 | } |
1102 | 1114 | ||
1103 | 1115 | ||