aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2015-02-17 14:04:44 +0000
committerJulius Bünger <buenger@mytum.de>2015-02-17 14:04:44 +0000
commit0ea0ba9874d6252da26a2ae20090ffe095559cf9 (patch)
treecc4ed323066f9f5d63c0c2969fa11108537ab543 /src
parentb09e38d61b47755964855e572ee87ffe01848ceb (diff)
downloadgnunet-0ea0ba9874d6252da26a2ae20090ffe095559cf9.tar.gz
gnunet-0ea0ba9874d6252da26a2ae20090ffe095559cf9.zip
- fixed memory and coding issues
Diffstat (limited to 'src')
-rw-r--r--src/rps/gnunet-service-rps.c28
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