aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/plugin_namestore_flat.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-05-20 23:40:20 +0200
committerChristian Grothoff <christian@grothoff.org>2018-05-20 23:40:20 +0200
commitd080cb1ed80a0e528b2b755ee48ca18cb670175e (patch)
treed8c0edab6035e4d38138b303566e972fbf8b8c5f /src/namestore/plugin_namestore_flat.c
parent0a8c135eedab5213b31c21b3d4b800e5f0f6041f (diff)
downloadgnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.tar.gz
gnunet-d080cb1ed80a0e528b2b755ee48ca18cb670175e.zip
check return values from GNSRECORD_record_serialize/size always
Diffstat (limited to 'src/namestore/plugin_namestore_flat.c')
-rw-r--r--src/namestore/plugin_namestore_flat.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/namestore/plugin_namestore_flat.c b/src/namestore/plugin_namestore_flat.c
index 35d8424b4..95edb9d87 100644
--- a/src/namestore/plugin_namestore_flat.c
+++ b/src/namestore/plugin_namestore_flat.c
@@ -301,7 +301,7 @@ store_and_free_entries (void *cls,
301 char *line; 301 char *line;
302 char *zone_private_key; 302 char *zone_private_key;
303 char *record_data_b64; 303 char *record_data_b64;
304 size_t data_size; 304 ssize_t data_size;
305 305
306 (void) key; 306 (void) key;
307 GNUNET_STRINGS_base64_encode ((char*)entry->private_key, 307 GNUNET_STRINGS_base64_encode ((char*)entry->private_key,
@@ -309,6 +309,18 @@ store_and_free_entries (void *cls,
309 &zone_private_key); 309 &zone_private_key);
310 data_size = GNUNET_GNSRECORD_records_get_size (entry->record_count, 310 data_size = GNUNET_GNSRECORD_records_get_size (entry->record_count,
311 entry->record_data); 311 entry->record_data);
312 if (data_size < 0)
313 {
314 GNUNET_break (0);
315 GNUNET_free (zone_private_key);
316 return GNUNET_SYSERR;
317 }
318 if (data_size >= UINT16_MAX)
319 {
320 GNUNET_break (0);
321 GNUNET_free (zone_private_key);
322 return GNUNET_SYSERR;
323 }
312 { 324 {
313 char data[data_size]; 325 char data[data_size];
314 ssize_t ret; 326 ssize_t ret;
@@ -318,7 +330,7 @@ store_and_free_entries (void *cls,
318 data_size, 330 data_size,
319 data); 331 data);
320 if ( (ret < 0) || 332 if ( (ret < 0) ||
321 (data_size != (size_t) ret) ) 333 (data_size != ret) )
322 { 334 {
323 GNUNET_break (0); 335 GNUNET_break (0);
324 GNUNET_free (zone_private_key); 336 GNUNET_free (zone_private_key);