X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fnamestore%2Fplugin_namestore_flat.c;h=e16fe91b7b88b30f74ae5361436f54632b1add4d;hb=5fb272d662eca0707b1a5c7747ae476f8157d332;hp=95edb9d879111a6556de60833e457b451e03f9bf;hpb=d080cb1ed80a0e528b2b755ee48ca18cb670175e;p=oweals%2Fgnunet.git diff --git a/src/namestore/plugin_namestore_flat.c b/src/namestore/plugin_namestore_flat.c index 95edb9d87..e16fe91b7 100644 --- a/src/namestore/plugin_namestore_flat.c +++ b/src/namestore/plugin_namestore_flat.c @@ -2,20 +2,18 @@ * This file is part of GNUnet * Copyright (C) 2009-2015, 2018 GNUnet e.V. * - * GNUnet is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published - * by the Free Software Foundation; either version 3, or (at your - * option) any later version. + * GNUnet is free software: you can redistribute it and/or modify it + * under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. * * GNUnet is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. + * Affero General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with GNUnet; see the file COPYING. If not, write to the - * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301, USA. + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . */ /** @@ -57,7 +55,7 @@ struct FlatFileEntry /** * Entry zone */ - struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key; + struct GNUNET_CRYPTO_EcdsaPrivateKey private_key; /** * Record cound @@ -95,7 +93,6 @@ static int database_setup (struct Plugin *plugin) { char *afsdir; - char *key; char *record_data; char *zone_private_key; char *record_data_b64; @@ -106,7 +103,6 @@ database_setup (struct Plugin *plugin) char *record_count; size_t record_data_size; uint64_t size; - size_t key_len; struct GNUNET_HashCode hkey; struct GNUNET_DISK_FileHandle *fh; struct FlatFileEntry *entry; @@ -234,7 +230,7 @@ database_setup (struct Plugin *plugin) record_data_size = GNUNET_STRINGS_base64_decode (record_data_b64, strlen (record_data_b64), - &record_data); + (void **) &record_data); entry->record_data = GNUNET_new_array (entry->record_count, struct GNUNET_GNSRECORD_Data); @@ -253,21 +249,34 @@ database_setup (struct Plugin *plugin) break; } GNUNET_free (record_data); - GNUNET_STRINGS_base64_decode (zone_private_key, - strlen (zone_private_key), - (char**)&entry->private_key); - key_len = strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey); - key = GNUNET_malloc (strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); - GNUNET_memcpy (key, - label, - strlen (label)); - GNUNET_memcpy (key+strlen(label), - entry->private_key, - sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); - GNUNET_CRYPTO_hash (key, - key_len, - &hkey); - GNUNET_free (key); + + { + struct GNUNET_CRYPTO_EcdsaPrivateKey *private_key; + + GNUNET_STRINGS_base64_decode (zone_private_key, + strlen (zone_private_key), + (void**)&private_key); + entry->private_key = *private_key; + GNUNET_free (private_key); + } + + { + char *key; + size_t key_len; + + key_len = strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey); + key = GNUNET_malloc (strlen (label) + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); + GNUNET_memcpy (key, + label, + strlen (label)); + GNUNET_memcpy (key+strlen(label), + &entry->private_key, + sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); + GNUNET_CRYPTO_hash (key, + key_len, + &hkey); + GNUNET_free (key); + } if (GNUNET_OK != GNUNET_CONTAINER_multihashmap_put (plugin->hm, &hkey, @@ -304,7 +313,7 @@ store_and_free_entries (void *cls, ssize_t data_size; (void) key; - GNUNET_STRINGS_base64_encode ((char*)entry->private_key, + GNUNET_STRINGS_base64_encode (&entry->private_key, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey), &zone_private_key); data_size = GNUNET_GNSRECORD_records_get_size (entry->record_count, @@ -355,7 +364,6 @@ store_and_free_entries (void *cls, strlen (line)); GNUNET_free (line); - GNUNET_free (entry->private_key); GNUNET_free (entry->label); GNUNET_free (entry->record_data); GNUNET_free (entry); @@ -443,11 +451,10 @@ namestore_flat_store_records (void *cls, return GNUNET_OK; } entry = GNUNET_new (struct FlatFileEntry); - entry->private_key = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPrivateKey); GNUNET_asprintf (&entry->label, label, strlen (label)); - GNUNET_memcpy (entry->private_key, + GNUNET_memcpy (&entry->private_key, zone_key, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)); entry->rvalue = rvalue; @@ -521,7 +528,7 @@ namestore_flat_lookup_records (void *cls, if (NULL != iter) iter (iter_cls, 0, - entry->private_key, + &entry->private_key, entry->label, entry->record_count, entry->record_data); @@ -588,7 +595,7 @@ iterate_zones (void *cls, if (0 == ic->limit) return GNUNET_NO; if ( (NULL != ic->zone) && - (0 != memcmp (entry->private_key, + (0 != memcmp (&entry->private_key, ic->zone, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) ) return GNUNET_YES; @@ -600,7 +607,7 @@ iterate_zones (void *cls, } ic->iter (ic->iter_cls, ic->pos, - entry->private_key, + &entry->private_key, entry->label, entry->record_count, entry->record_data); @@ -670,7 +677,7 @@ zone_to_name (void *cls, struct FlatFileEntry *entry = value; (void) key; - if (0 != memcmp (entry->private_key, + if (0 != memcmp (&entry->private_key, ztn->zone, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) return GNUNET_YES; @@ -685,7 +692,7 @@ zone_to_name (void *cls, { ztn->iter (ztn->iter_cls, 0, - entry->private_key, + &entry->private_key, entry->label, entry->record_count, entry->record_data);