diff options
author | Christian Grothoff <christian@grothoff.org> | 2009-11-22 13:44:14 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2009-11-22 13:44:14 +0000 |
commit | 8ca761fc103ec014d5ab3dc51660861fa8bd7472 (patch) | |
tree | 666ab08eb073e7f3dc8e4c0483de0c8ad9c1903c /src/util/bio.c | |
parent | 35a02835a9502dc731dfb8fe2b5cbc4b1864ef0a (diff) | |
download | gnunet-8ca761fc103ec014d5ab3dc51660861fa8bd7472.tar.gz gnunet-8ca761fc103ec014d5ab3dc51660861fa8bd7472.zip |
fixing bug in bio.c triggered by test_pseudonym.c
Diffstat (limited to 'src/util/bio.c')
-rw-r--r-- | src/util/bio.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/util/bio.c b/src/util/bio.c index 1143e89de..102d3df50 100644 --- a/src/util/bio.c +++ b/src/util/bio.c | |||
@@ -209,13 +209,12 @@ GNUNET_BIO_read_meta_data (struct GNUNET_BIO_ReadHandle *h, | |||
209 | char *buf; | 209 | char *buf; |
210 | struct GNUNET_CONTAINER_MetaData *meta; | 210 | struct GNUNET_CONTAINER_MetaData *meta; |
211 | 211 | ||
212 | if (GNUNET_BIO_read_int32__ (h, what, (int32_t *) & size) != GNUNET_OK) | 212 | if (GNUNET_BIO_read_int32__ (h, what, (int32_t *) &size) != GNUNET_OK) |
213 | return GNUNET_SYSERR; | 213 | return GNUNET_SYSERR; |
214 | if (size > MAX_META_DATA) | 214 | if (size > MAX_META_DATA) |
215 | { | 215 | { |
216 | GNUNET_asprintf (&h->emsg, | 216 | GNUNET_asprintf (&h->emsg, |
217 | _ | 217 | _("Serialized metadata `%s' larger than allowed (%u>%u)"), |
218 | ("Serialized metadata `%s' larger than allowed (%u > %u)"), | ||
219 | what, size, MAX_META_DATA); | 218 | what, size, MAX_META_DATA); |
220 | return GNUNET_SYSERR; | 219 | return GNUNET_SYSERR; |
221 | } | 220 | } |
@@ -432,24 +431,26 @@ int | |||
432 | GNUNET_BIO_write_meta_data (struct GNUNET_BIO_WriteHandle *h, | 431 | GNUNET_BIO_write_meta_data (struct GNUNET_BIO_WriteHandle *h, |
433 | const struct GNUNET_CONTAINER_MetaData *m) | 432 | const struct GNUNET_CONTAINER_MetaData *m) |
434 | { | 433 | { |
435 | unsigned int size; | 434 | ssize_t size; |
436 | char *buf; | 435 | char *buf; |
437 | 436 | ||
438 | size = GNUNET_CONTAINER_meta_data_get_serialized_size (m, | 437 | size = GNUNET_CONTAINER_meta_data_get_serialized_size (m, |
439 | GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL | 438 | GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL |
440 | | | 439 | | |
441 | GNUNET_CONTAINER_META_DATA_SERIALIZE_NO_COMPRESS); | 440 | GNUNET_CONTAINER_META_DATA_SERIALIZE_NO_COMPRESS); |
441 | if (size == -1) | ||
442 | return GNUNET_SYSERR; | ||
442 | if (size > MAX_META_DATA) | 443 | if (size > MAX_META_DATA) |
443 | size = MAX_META_DATA; | 444 | size = MAX_META_DATA; |
444 | buf = GNUNET_malloc (size); | 445 | buf = GNUNET_malloc (size); |
445 | GNUNET_CONTAINER_meta_data_serialize (m, | 446 | size = GNUNET_CONTAINER_meta_data_serialize (m, |
446 | buf, | 447 | buf, |
447 | size, | 448 | size, |
448 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART | 449 | GNUNET_CONTAINER_META_DATA_SERIALIZE_PART |
449 | | | 450 | | |
450 | GNUNET_CONTAINER_META_DATA_SERIALIZE_NO_COMPRESS); | 451 | GNUNET_CONTAINER_META_DATA_SERIALIZE_NO_COMPRESS); |
451 | if ((GNUNET_OK != GNUNET_BIO_write_int32 (h, size)) | 452 | if ( (GNUNET_OK != GNUNET_BIO_write_int32 (h, (uint32_t) size)) || |
452 | || (GNUNET_OK != GNUNET_BIO_write (h, buf, size))) | 453 | (GNUNET_OK != GNUNET_BIO_write (h, buf, size)) ) |
453 | { | 454 | { |
454 | GNUNET_free (buf); | 455 | GNUNET_free (buf); |
455 | return GNUNET_SYSERR; | 456 | return GNUNET_SYSERR; |