diff options
Diffstat (limited to 'src/util/container_meta_data.c')
-rw-r--r-- | src/util/container_meta_data.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/util/container_meta_data.c b/src/util/container_meta_data.c index e4d8737c8..a614f3c4f 100644 --- a/src/util/container_meta_data.c +++ b/src/util/container_meta_data.c | |||
@@ -794,7 +794,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
794 | if (md->sbuf != NULL) | 794 | if (md->sbuf != NULL) |
795 | { | 795 | { |
796 | /* try to use serialization cache */ | 796 | /* try to use serialization cache */ |
797 | if (md->sbuf_size < max) | 797 | if (md->sbuf_size <= max) |
798 | { | 798 | { |
799 | if (NULL == *target) | 799 | if (NULL == *target) |
800 | *target = GNUNET_malloc (md->sbuf_size); | 800 | *target = GNUNET_malloc (md->sbuf_size); |
@@ -881,10 +881,10 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
881 | of making the API look strange. */ | 881 | of making the API look strange. */ |
882 | vmd = (struct GNUNET_CONTAINER_MetaData*) md; | 882 | vmd = (struct GNUNET_CONTAINER_MetaData*) md; |
883 | hdr = GNUNET_malloc (left + sizeof (struct MetaDataHeader)); | 883 | hdr = GNUNET_malloc (left + sizeof (struct MetaDataHeader)); |
884 | hdr->size = htonl (left); | ||
884 | hdr->entries = htonl (md->item_count); | 885 | hdr->entries = htonl (md->item_count); |
885 | if (GNUNET_YES == comp) | 886 | if (GNUNET_YES == comp) |
886 | { | 887 | { |
887 | hdr->size = htonl (clen); | ||
888 | hdr->version = htonl (2 | HEADER_COMPRESSED); | 888 | hdr->version = htonl (2 | HEADER_COMPRESSED); |
889 | memcpy (&hdr[1], | 889 | memcpy (&hdr[1], |
890 | cdata, | 890 | cdata, |
@@ -893,7 +893,6 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
893 | } | 893 | } |
894 | else | 894 | else |
895 | { | 895 | { |
896 | hdr->size = htonl (left); | ||
897 | hdr->version = htonl (2); | 896 | hdr->version = htonl (2); |
898 | memcpy (&hdr[1], | 897 | memcpy (&hdr[1], |
899 | &ent[0], | 898 | &ent[0], |
@@ -917,9 +916,9 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
917 | *target = (char*) hdr; | 916 | *target = (char*) hdr; |
918 | } | 917 | } |
919 | hdr->version = htonl (2 | HEADER_COMPRESSED); | 918 | hdr->version = htonl (2 | HEADER_COMPRESSED); |
920 | hdr->entries = htonl (md->item_count - i); | ||
921 | hdr->size = htonl (left); | 919 | hdr->size = htonl (left); |
922 | memcpy (&target[sizeof(struct MetaDataHeader)], | 920 | hdr->entries = htonl (md->item_count - i); |
921 | memcpy (&(*target)[sizeof(struct MetaDataHeader)], | ||
923 | cdata, | 922 | cdata, |
924 | clen); | 923 | clen); |
925 | GNUNET_free (cdata); | 924 | GNUNET_free (cdata); |
@@ -928,7 +927,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
928 | } | 927 | } |
929 | else | 928 | else |
930 | { | 929 | { |
931 | hdr = (struct MetaDataHeader*) target; | 930 | hdr = (struct MetaDataHeader*) *target; |
932 | if (hdr == NULL) | 931 | if (hdr == NULL) |
933 | { | 932 | { |
934 | hdr = GNUNET_malloc (left + sizeof (struct MetaDataHeader)); | 933 | hdr = GNUNET_malloc (left + sizeof (struct MetaDataHeader)); |
@@ -937,7 +936,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
937 | hdr->version = htonl (2); | 936 | hdr->version = htonl (2); |
938 | hdr->entries = htonl (md->item_count - i); | 937 | hdr->entries = htonl (md->item_count - i); |
939 | hdr->size = htonl (left); | 938 | hdr->size = htonl (left); |
940 | memcpy (&target[sizeof(struct MetaDataHeader)], | 939 | memcpy (&(*target)[sizeof(struct MetaDataHeader)], |
941 | &ent[i], | 940 | &ent[i], |
942 | left); | 941 | left); |
943 | GNUNET_free (ent); | 942 | GNUNET_free (ent); |
@@ -964,7 +963,7 @@ GNUNET_CONTAINER_meta_data_serialize (const struct GNUNET_CONTAINER_MetaData | |||
964 | GNUNET_free (ent); | 963 | GNUNET_free (ent); |
965 | 964 | ||
966 | /* nothing fit, only write header! */ | 965 | /* nothing fit, only write header! */ |
967 | hdr = (struct MetaDataHeader*) target; | 966 | hdr = (struct MetaDataHeader*) *target; |
968 | if (hdr == NULL) | 967 | if (hdr == NULL) |
969 | { | 968 | { |
970 | hdr = GNUNET_malloc (sizeof (struct MetaDataHeader)); | 969 | hdr = GNUNET_malloc (sizeof (struct MetaDataHeader)); |