[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r9465 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r9465 - gnunet/src/util |
Date: |
Thu, 12 Nov 2009 04:55:45 -0700 |
Author: jilu
Date: 2009-11-12 04:55:45 -0700 (Thu, 12 Nov 2009)
New Revision: 9465
Modified:
gnunet/src/util/pseudonym.c
Log:
fixed all null problems
Modified: gnunet/src/util/pseudonym.c
===================================================================
--- gnunet/src/util/pseudonym.c 2009-11-11 23:44:04 UTC (rev 9464)
+++ gnunet/src/util/pseudonym.c 2009-11-12 11:55:45 UTC (rev 9465)
@@ -29,6 +29,7 @@
#include "gnunet_container_lib.h"
#include "gnunet_disk_lib.h"
#include "gnunet_pseudonym_lib.h"
+#include "gnunet_bio_lib.h"
/**
* FIXME
@@ -175,46 +176,18 @@
const struct GNUNET_CONTAINER_MetaData *meta,
int32_t ranking, const char *ns_name)
{
- size_t size;
- size_t tag;
- size_t off;
- char *buf;
char *fn;
fn = get_data_filename (cfg, PS_METADATA_DIR, nsid);
GNUNET_assert (fn != NULL);
- size = GNUNET_CONTAINER_meta_data_get_serialized_size (meta,
-
GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL);
- tag = size + sizeof (int32_t) + 1;
- off = 0;
- if (ns_name != NULL)
- {
- off = strlen (ns_name);
- tag += off;
- }
- buf = GNUNET_malloc (tag);
- ((int32_t *) buf)[0] = htonl (ranking); /* ranking */
- if (ns_name != NULL)
- {
- memcpy (&buf[sizeof (int32_t)], ns_name, off + 1);
- }
- else
- {
- buf[sizeof (int)] = '\0';
- }
- GNUNET_assert
- (size == GNUNET_CONTAINER_meta_data_serialize (meta,
- &buf[sizeof
- (int32_t) +
- off + 1],
- size,
-
GNUNET_CONTAINER_META_DATA_SERIALIZE_FULL));
- GNUNET_break
- (tag == GNUNET_DISK_fn_write (fn, buf, tag, GNUNET_DISK_PERM_USER_READ
- | GNUNET_DISK_PERM_USER_WRITE |
- GNUNET_DISK_PERM_GROUP_READ));
+ struct GNUNET_BIO_WriteHandle *fileW;
+ fileW = GNUNET_BIO_write_open(fn);
+ GNUNET_assert (NULL != fileW);
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_int32(fileW, ranking));
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_string(fileW, ns_name));
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_write_meta_data(fileW, meta));
+ GNUNET_assert(GNUNET_OK == GNUNET_BIO_write_close(fileW));
GNUNET_free (fn);
- GNUNET_free (buf);
/* create entry for pseudonym name in names */
GNUNET_free_non_null (GNUNET_PSEUDONYM_id_to_name (cfg, nsid));
}
@@ -229,84 +202,19 @@
struct GNUNET_CONTAINER_MetaData **meta,
int32_t * ranking, char **ns_name)
{
- uint64_t len;
- size_t size;
- size_t zend;
- struct stat sbuf;
- char *buf;
char *fn;
+ char *emsg;
- if (meta != NULL)
- *meta = NULL;
- if (ns_name != NULL)
- *ns_name = NULL;
fn = get_data_filename (cfg, PS_METADATA_DIR, nsid);
GNUNET_assert (fn != NULL);
-
- if ((0 != STAT (fn, &sbuf))
- || (GNUNET_OK != GNUNET_DISK_file_size (fn, &len, GNUNET_YES)))
- {
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (len <= sizeof (int32_t) + 1)
- {
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (len > 16 * 1024 * 1024)
- {
- /* too big, must be invalid! remove! */
- GNUNET_break (0);
- if (0 != UNLINK (fn))
- GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "unlink", fn);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- buf = GNUNET_malloc (len);
- if (len != GNUNET_DISK_fn_read (fn, buf, len))
- {
- GNUNET_free (buf);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (ranking != NULL)
- *ranking = ntohl (((int32_t *) buf)[0]);
- zend = sizeof (int32_t);
- while ((zend < len) && (buf[zend] != '\0'))
- zend++;
- if (zend == len)
- {
- GNUNET_free (buf);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- if (ns_name != NULL)
- {
- if (zend != sizeof (int32_t))
- *ns_name = GNUNET_strdup (&buf[sizeof (int32_t)]);
- else
- *ns_name = NULL;
- }
- zend++;
- size = len - zend;
- if (meta != NULL)
- {
- *meta = GNUNET_CONTAINER_meta_data_deserialize (&buf[zend], size);
- if ((*meta) == NULL)
- {
- /* invalid data! remove! */
- GNUNET_break (0);
- if (0 != UNLINK (fn))
- GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
- "unlink", fn);
- GNUNET_free (buf);
- GNUNET_free (fn);
- return GNUNET_SYSERR;
- }
- }
+ struct GNUNET_BIO_ReadHandle *fileR;
+ fileR = GNUNET_BIO_read_open(fn);
+ GNUNET_assert (NULL != fileR);
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_int32__(fileR, "Read int32
error!", ranking));
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_string(fileR, "Read string
error!", ns_name, 200));
+ GNUNET_assert (GNUNET_OK == GNUNET_BIO_read_meta_data(fileR, "Read meta data
error!", meta));
+ GNUNET_assert(GNUNET_OK == GNUNET_BIO_read_close(fileR, &emsg));
GNUNET_free (fn);
- GNUNET_free (buf);
return GNUNET_OK;
}
@@ -333,10 +241,12 @@
unsigned int idx;
char *ret;
struct stat sbuf;
+ int32_t temp = 0;
+ int32_t *rank = &temp;
meta = NULL;
name = NULL;
- if (GNUNET_OK == read_info (cfg, nsid, &meta, NULL, &name))
+ if (GNUNET_OK == read_info (cfg, nsid, &meta, rank, &name))
{
if ((meta != NULL) && (name == NULL))
name = GNUNET_CONTAINER_meta_data_get_first_by_types (meta,
@@ -493,6 +403,7 @@
int rating;
struct GNUNET_CONTAINER_MetaData *meta;
const char *fn;
+ const char *str = "not null";
if (strlen (fullname) < sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded))
return GNUNET_OK;
@@ -504,7 +415,7 @@
ret = GNUNET_OK;
if (GNUNET_OK != GNUNET_CRYPTO_hash_from_string (fn, &id))
return GNUNET_OK; /* invalid name */
- if (GNUNET_OK != read_info (c->cfg, &id, &meta, &rating, NULL))
+ if (GNUNET_OK != read_info (c->cfg, &id, &meta, &rating, &str))
return GNUNET_OK; /* ignore entry */
if (c->iterator != NULL)
ret = c->iterator (c->closure, &id, meta, rating);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r9465 - gnunet/src/util,
gnunet <=