[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r25874 - gnunet/src/fs
From: |
gnunet |
Subject: |
[GNUnet-SVN] r25874 - gnunet/src/fs |
Date: |
Thu, 24 Jan 2013 11:52:19 +0100 |
Author: grothoff
Date: 2013-01-24 11:52:19 +0100 (Thu, 24 Jan 2013)
New Revision: 25874
Modified:
gnunet/src/fs/fs_namespace.c
Log:
-fix #2743
Modified: gnunet/src/fs/fs_namespace.c
===================================================================
--- gnunet/src/fs/fs_namespace.c 2013-01-24 10:16:44 UTC (rev 25873)
+++ gnunet/src/fs/fs_namespace.c 2013-01-24 10:52:19 UTC (rev 25874)
@@ -544,27 +544,36 @@
struct GNUNET_HashCode id; /* hash of hc = identifier */
struct GNUNET_HashCode query; /* id ^ nsid = DB query */
- if (NULL == meta)
- mmeta = GNUNET_CONTAINER_meta_data_create ();
- else
- mmeta = GNUNET_CONTAINER_meta_data_duplicate (meta);
- uris = GNUNET_FS_uri_to_string (uri);
- slen = strlen (uris) + 1;
idlen = strlen (identifier);
if (NULL != update)
nidlen = strlen (update) + 1;
else
nidlen = 1;
+ uris = GNUNET_FS_uri_to_string (uri);
+ slen = strlen (uris) + 1;
+ if ( (slen >= MAX_SBLOCK_SIZE - sizeof (struct SBlock)) ||
+ (nidlen >= MAX_SBLOCK_SIZE - sizeof (struct SBlock) - slen) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Identifiers or URI too long to create SBlock"));
+ GNUNET_free (uris);
+ return NULL;
+ }
+ if (NULL == meta)
+ mmeta = GNUNET_CONTAINER_meta_data_create ();
+ else
+ mmeta = GNUNET_CONTAINER_meta_data_duplicate (meta);
mdsize = GNUNET_CONTAINER_meta_data_get_serialized_size (mmeta);
size = sizeof (struct SBlock) + slen + nidlen + mdsize;
- if (size > MAX_SBLOCK_SIZE)
+ if ( (size > MAX_SBLOCK_SIZE) ||
+ (size < sizeof (struct SBlock) + slen + nidlen) )
{
size = MAX_SBLOCK_SIZE;
- mdsize = size - (sizeof (struct SBlock) + slen + nidlen);
+ mdsize = MAX_SBLOCK_SIZE - (sizeof (struct SBlock) + slen + nidlen);
}
sb = GNUNET_malloc (sizeof (struct SBlock) + size);
dest = (char *) &sb[1];
- if (update != NULL)
+ if (NULL != update)
memcpy (dest, update, nidlen);
else
memset (dest, 0, 1);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r25874 - gnunet/src/fs,
gnunet <=