gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r37480 - gnunet/src/namestore


From: gnunet
Subject: [GNUnet-SVN] r37480 - gnunet/src/namestore
Date: Thu, 7 Jul 2016 14:26:24 +0200

Author: schanzen
Date: 2016-07-07 14:26:24 +0200 (Thu, 07 Jul 2016)
New Revision: 37480

Modified:
   gnunet/src/namestore/plugin_namestore_flat.c
Log:
-coverity

Modified: gnunet/src/namestore/plugin_namestore_flat.c
===================================================================
--- gnunet/src/namestore/plugin_namestore_flat.c        2016-07-07 12:18:35 UTC 
(rev 37479)
+++ gnunet/src/namestore/plugin_namestore_flat.c        2016-07-07 12:26:24 UTC 
(rev 37480)
@@ -225,8 +225,20 @@
         break;
       line = strtok (NULL, "\n");
       entry = GNUNET_malloc (sizeof (struct FlatFileEntry));
-      sscanf (rvalue, "%lu", &entry->rvalue);
-      sscanf (record_count, "%u", &entry->record_count);
+      if (1 != sscanf (rvalue, "%lu", &entry->rvalue))
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    "Error parsing entry\n");
+        GNUNET_free (entry);
+        break;
+      }
+      if (1 != sscanf (record_count, "%u", &entry->record_count))
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    "Error parsing entry\n");
+        GNUNET_free (entry);
+        break;
+      }
       entry->label = GNUNET_strdup (label);
       record_data_size = GNUNET_STRINGS_base64_decode (record_data_b64,
                                                        strlen 
(record_data_b64),
@@ -233,10 +245,18 @@
                                                        &record_data);
       entry->record_data = 
         GNUNET_malloc (sizeof (struct GNUNET_GNSRECORD_Data) * 
entry->record_count);
-      GNUNET_GNSRECORD_records_deserialize (record_data_size,
-                                            record_data,
-                                            entry->record_count,
-                                            entry->record_data);
+      if (GNUNET_OK != GNUNET_GNSRECORD_records_deserialize (record_data_size,
+                                                             record_data,
+                                                             
entry->record_count,
+                                                             
entry->record_data))
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    "Unable to deserialize record %s\n", label);
+        GNUNET_free (entry->label);
+        GNUNET_free (entry);
+        GNUNET_free (record_data);
+        break;
+      }
       GNUNET_free (record_data);
       GNUNET_STRINGS_base64_decode (zone_private_key,
                                     strlen (zone_private_key),
@@ -291,7 +311,7 @@
                                 &zone_private_key);
   GNUNET_asprintf (&rvalue, "%lu", entry->rvalue);
   GNUNET_asprintf (&record_count, "%u", entry->record_count);
-  
+
   data_size = GNUNET_GNSRECORD_records_get_size (entry->record_count,
                                                  entry->record_data);
   char data[data_size];
@@ -301,6 +321,9 @@
                                                        data))
   {
     GNUNET_break (0);
+    GNUNET_free (zone_private_key);
+    GNUNET_free (rvalue);
+    GNUNET_free (record_count);
     return GNUNET_SYSERR;
   }
   GNUNET_STRINGS_base64_encode (data,
@@ -468,7 +491,7 @@
                       key_len,
                       &hkey);
   GNUNET_free (key);
-  
+
   entry = GNUNET_CONTAINER_multihashmap_get (plugin->hm, &hkey);
 
   if (NULL == entry)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]