struct GNUNET_PeerIdentity sender;
/**
- * The message that was sent
+ * The length of the message that was sent (appended to this end of struct)
*/
uint32_t msg_len;
*/
uint32_t distance;
- /**
- * Length of the sender address, appended to end of this message
- */
- uint32_t sender_address_len;
-
};
received_msg = (struct GNUNET_DV_MessageReceived *)msg;
packed_msg_len = ntohl(received_msg->msg_len);
- sender_address_len = ntohl(received_msg->sender_address_len);
-
- GNUNET_assert(ntohs(msg->size) == (sizeof(struct GNUNET_DV_MessageReceived) + packed_msg_len + sender_address_len));
+ sender_address_len = ntohs(msg->size) - packed_msg_len - sizeof(struct GNUNET_DV_MessageReceived);
+ GNUNET_assert(sender_address_len > 0);
sender_address = GNUNET_malloc(sender_address_len);
memcpy(sender_address, &received_msg[1], sender_address_len);
packed_msg_start = (char *)&received_msg[1];
received_msg = GNUNET_malloc(size);
received_msg->header.size = htons(size);
received_msg->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_DV_RECEIVE);
- received_msg->sender_address_len = htonl(sender_address_len);
received_msg->distance = htonl(cost);
received_msg->msg_len = htonl(message_size);
/* Set the sender in this message to be the original sender! */