aboutsummaryrefslogtreecommitdiff
path: root/src/util/bio.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2009-11-22 13:44:14 +0000
committerChristian Grothoff <christian@grothoff.org>2009-11-22 13:44:14 +0000
commit8ca761fc103ec014d5ab3dc51660861fa8bd7472 (patch)
tree666ab08eb073e7f3dc8e4c0483de0c8ad9c1903c /src/util/bio.c
parent35a02835a9502dc731dfb8fe2b5cbc4b1864ef0a (diff)
downloadgnunet-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.c27
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
432GNUNET_BIO_write_meta_data (struct GNUNET_BIO_WriteHandle *h, 431GNUNET_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;