diff options
Diffstat (limited to 'src/messenger/messenger_api_message.c')
-rw-r--r-- | src/messenger/messenger_api_message.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/messenger/messenger_api_message.c b/src/messenger/messenger_api_message.c index d65b80576..facd7b093 100644 --- a/src/messenger/messenger_api_message.c +++ b/src/messenger/messenger_api_message.c | |||
@@ -373,11 +373,14 @@ static void | |||
373 | encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, const struct GNUNET_MESSENGER_MessageBody *body, | 373 | encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, const struct GNUNET_MESSENGER_MessageBody *body, |
374 | uint16_t length, char *buffer, uint16_t offset) | 374 | uint16_t length, char *buffer, uint16_t offset) |
375 | { | 375 | { |
376 | uint32_t version; | ||
376 | switch (kind) | 377 | switch (kind) |
377 | { | 378 | { |
378 | case GNUNET_MESSENGER_KIND_INFO: | 379 | case GNUNET_MESSENGER_KIND_INFO: |
380 | version = GNUNET_htobe32(body->info.messenger_version); | ||
381 | |||
379 | encode_step_key(buffer, offset, &(body->info.host_key), length); | 382 | encode_step_key(buffer, offset, &(body->info.host_key), length); |
380 | encode_step(buffer, offset, &(body->info.messenger_version)); | 383 | encode_step(buffer, offset, &version); |
381 | break; | 384 | break; |
382 | case GNUNET_MESSENGER_KIND_JOIN: | 385 | case GNUNET_MESSENGER_KIND_JOIN: |
383 | encode_step_key(buffer, offset, &(body->join.key), length); | 386 | encode_step_key(buffer, offset, &(body->join.key), length); |
@@ -452,7 +455,7 @@ encode_message (const struct GNUNET_MESSENGER_Message *message, uint16_t length, | |||
452 | if (GNUNET_YES == include_signature) | 455 | if (GNUNET_YES == include_signature) |
453 | encode_step_signature(buffer, offset, &(message->header.signature), length); | 456 | encode_step_signature(buffer, offset, &(message->header.signature), length); |
454 | 457 | ||
455 | const kind_t kind = (kind_t) message->header.kind; | 458 | const kind_t kind = GNUNET_htobe32((kind_t) message->header.kind); |
456 | 459 | ||
457 | encode_step(buffer, offset, &(message->header.timestamp)); | 460 | encode_step(buffer, offset, &(message->header.timestamp)); |
458 | encode_step(buffer, offset, &(message->header.sender_id)); | 461 | encode_step(buffer, offset, &(message->header.sender_id)); |
@@ -468,7 +471,7 @@ encode_short_message (const struct GNUNET_MESSENGER_ShortMessage *message, uint1 | |||
468 | struct GNUNET_HashCode hash; | 471 | struct GNUNET_HashCode hash; |
469 | uint16_t offset = sizeof(hash); | 472 | uint16_t offset = sizeof(hash); |
470 | 473 | ||
471 | const kind_t kind = (kind_t) message->kind; | 474 | const kind_t kind = GNUNET_htobe32((kind_t) message->kind); |
472 | 475 | ||
473 | encode_step(buffer, offset, &kind); | 476 | encode_step(buffer, offset, &kind); |
474 | 477 | ||
@@ -526,11 +529,14 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind *kind, struct GNUNET_MESS | |||
526 | 529 | ||
527 | length -= padding; | 530 | length -= padding; |
528 | 531 | ||
532 | uint32_t version; | ||
529 | switch (*kind) | 533 | switch (*kind) |
530 | { | 534 | { |
531 | case GNUNET_MESSENGER_KIND_INFO: { | 535 | case GNUNET_MESSENGER_KIND_INFO: { |
532 | decode_step_key(buffer, offset, &(body->info.host_key), length); | 536 | decode_step_key(buffer, offset, &(body->info.host_key), length); |
533 | decode_step(buffer, offset, &(body->info.messenger_version)); | 537 | decode_step(buffer, offset, &version); |
538 | |||
539 | body->info.messenger_version = GNUNET_be32toh(version); | ||
534 | break; | 540 | break; |
535 | } case GNUNET_MESSENGER_KIND_JOIN: { | 541 | } case GNUNET_MESSENGER_KIND_JOIN: { |
536 | decode_step_key(buffer, offset, &(body->join.key), length); | 542 | decode_step_key(buffer, offset, &(body->join.key), length); |
@@ -618,7 +624,7 @@ decode_message (struct GNUNET_MESSENGER_Message *message, uint16_t length, const | |||
618 | decode_step(buffer, offset, &(message->header.previous)); | 624 | decode_step(buffer, offset, &(message->header.previous)); |
619 | decode_step(buffer, offset, &kind); | 625 | decode_step(buffer, offset, &kind); |
620 | 626 | ||
621 | message->header.kind = (enum GNUNET_MESSENGER_MessageKind) kind; | 627 | message->header.kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind); |
622 | 628 | ||
623 | if (count < get_message_kind_size (message->header.kind)) | 629 | if (count < get_message_kind_size (message->header.kind)) |
624 | return GNUNET_NO; | 630 | return GNUNET_NO; |
@@ -655,7 +661,7 @@ decode_short_message (struct GNUNET_MESSENGER_ShortMessage *message, uint16_t le | |||
655 | 661 | ||
656 | decode_step(buffer, offset, &kind); | 662 | decode_step(buffer, offset, &kind); |
657 | 663 | ||
658 | message->kind = (enum GNUNET_MESSENGER_MessageKind) kind; | 664 | message->kind = (enum GNUNET_MESSENGER_MessageKind) GNUNET_be32toh(kind); |
659 | 665 | ||
660 | if (length < get_short_message_size (message, GNUNET_NO)) | 666 | if (length < get_short_message_size (message, GNUNET_NO)) |
661 | return GNUNET_NO; | 667 | return GNUNET_NO; |