diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-03-12 17:30:49 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-03-12 17:30:49 +0000 |
commit | 54ce17ec50827d3a905a3cb182ccd3c18bbd3668 (patch) | |
tree | 61b35438d97bf9985cf220edb9ae3c2e744d5162 /src/dv/dv_api.c | |
parent | 81b31b0577c1c4e3ddfc736f65d3329b5afad1a9 (diff) | |
download | gnunet-54ce17ec50827d3a905a3cb182ccd3c18bbd3668.tar.gz gnunet-54ce17ec50827d3a905a3cb182ccd3c18bbd3668.zip |
wont work because someone made my random heap function unpossible. committing for posterity mostly
Diffstat (limited to 'src/dv/dv_api.c')
-rw-r--r-- | src/dv/dv_api.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/dv/dv_api.c b/src/dv/dv_api.c index 15ef822d6..9e99790fb 100644 --- a/src/dv/dv_api.c +++ b/src/dv/dv_api.c | |||
@@ -250,7 +250,10 @@ void handle_message_receipt (void *cls, | |||
250 | { | 250 | { |
251 | struct GNUNET_DV_Handle *handle = cls; | 251 | struct GNUNET_DV_Handle *handle = cls; |
252 | struct GNUNET_DV_MessageReceived *received_msg; | 252 | struct GNUNET_DV_MessageReceived *received_msg; |
253 | size_t packed_msg_len; | ||
254 | size_t sender_address_len; | ||
253 | char *sender_address; | 255 | char *sender_address; |
256 | char *packed_msg; | ||
254 | 257 | ||
255 | GNUNET_assert(ntohs(msg->type) == GNUNET_MESSAGE_TYPE_TRANSPORT_DV_RECEIVE); | 258 | GNUNET_assert(ntohs(msg->type) == GNUNET_MESSAGE_TYPE_TRANSPORT_DV_RECEIVE); |
256 | 259 | ||
@@ -258,17 +261,22 @@ void handle_message_receipt (void *cls, | |||
258 | return; | 261 | return; |
259 | 262 | ||
260 | received_msg = (struct GNUNET_DV_MessageReceived *)msg; | 263 | received_msg = (struct GNUNET_DV_MessageReceived *)msg; |
261 | GNUNET_assert(ntohs(msg->size) == (sizeof(struct GNUNET_DV_MessageReceived) + ntohs(received_msg->msg->size) + ntohs(received_msg->sender_address_len))); | 264 | packed_msg_len = ntohs(received_msg->msg_len); |
265 | sender_address_len = ntohs(received_msg->sender_address_len); | ||
266 | GNUNET_assert(ntohs(msg->size) == (sizeof(struct GNUNET_DV_MessageReceived) + packed_msg_len + sender_address_len)); | ||
262 | 267 | ||
263 | sender_address = GNUNET_malloc(ntohs(received_msg->sender_address_len)); | 268 | sender_address = GNUNET_malloc(sender_address_len); |
264 | sender_address = memcpy(sender_address, &received_msg[1], ntohs(received_msg->sender_address_len)); | 269 | memcpy(sender_address, &received_msg[1], sender_address_len); |
270 | packed_msg = GNUNET_malloc(packed_msg_len); | ||
271 | memcpy(packed_msg, &received_msg[1 + sender_address_len], packed_msg_len); | ||
265 | 272 | ||
266 | handle->receive_handler(handle->receive_cls, | 273 | handle->receive_handler(handle->receive_cls, |
267 | &received_msg->sender, | 274 | &received_msg->sender, |
268 | received_msg->msg, | 275 | packed_msg, |
276 | packed_msg_len, | ||
269 | ntohl(received_msg->distance), | 277 | ntohl(received_msg->distance), |
270 | sender_address, | 278 | sender_address, |
271 | ntohs(received_msg->sender_address_len)); | 279 | sender_address_len); |
272 | 280 | ||
273 | GNUNET_free(sender_address); | 281 | GNUNET_free(sender_address); |
274 | 282 | ||
@@ -281,6 +289,7 @@ void handle_message_receipt (void *cls, | |||
281 | * Send a message from the plugin to the DV service indicating that | 289 | * Send a message from the plugin to the DV service indicating that |
282 | * a message should be sent via DV to some peer. | 290 | * a message should be sent via DV to some peer. |
283 | * | 291 | * |
292 | * @param dv_handle the handle to the DV api | ||
284 | * @param target the final target of the message | 293 | * @param target the final target of the message |
285 | * @param msgbuf the msg(s) to send | 294 | * @param msgbuf the msg(s) to send |
286 | * @param msgbuf_size the size of msgbuf | 295 | * @param msgbuf_size the size of msgbuf |