diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-05-20 23:40:20 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-05-20 23:40:20 +0200 |
commit | d080cb1ed80a0e528b2b755ee48ca18cb670175e (patch) | |
tree | d8c0edab6035e4d38138b303566e972fbf8b8c5f /src/namestore/plugin_namestore_flat.c | |
parent | 0a8c135eedab5213b31c21b3d4b800e5f0f6041f (diff) | |
download | gnunet-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.c | 16 |
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); |