asserts
[oweals/gnunet.git] / src / util / bio.c
index ef31547be4dfc5b997a49f92c433e176d6235f9e..059638ff1f492414c25a1ac1db9abe65dbe7aab9 100644 (file)
@@ -188,7 +188,13 @@ GNUNET_BIO_read_string (struct GNUNET_BIO_ReadHandle *h,
   uint32_t big;
 
   if (GNUNET_OK != GNUNET_BIO_read_int32 (h, &big))
-    return GNUNET_SYSERR;
+    {
+      GNUNET_free_non_null (h->emsg);
+      GNUNET_asprintf (&h->emsg,
+                       _("Error reading length of string `%s'"),
+                       what);
+      return GNUNET_SYSERR;
+    }
   if (big == 0)
     {
       *result = NULL;
@@ -235,6 +241,11 @@ GNUNET_BIO_read_meta_data (struct GNUNET_BIO_ReadHandle *h,
 
   if (GNUNET_BIO_read_int32 (h, (int32_t *) &size) != GNUNET_OK)
     return GNUNET_SYSERR;
+  if (size == 0)
+    {
+      *result = NULL;
+      return GNUNET_OK;
+    }
   if (size > MAX_META_DATA)
     {
       GNUNET_asprintf (&h->emsg,
@@ -463,7 +474,9 @@ GNUNET_BIO_write_meta_data (struct GNUNET_BIO_WriteHandle *h,
 {
   ssize_t size;
   char *buf;
-
+  
+  if (m == NULL)    
+    return GNUNET_BIO_write_int32 (h, 0);   
   buf = NULL;
   size = GNUNET_CONTAINER_meta_data_serialize (m,
                                               &buf,