aboutsummaryrefslogtreecommitdiff
path: root/src/gns/plugin_gnsrecord_gns.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2017-03-10 17:57:40 +0100
committerChristian Grothoff <christian@grothoff.org>2017-03-10 17:57:40 +0100
commitffff350361b66d318d8890328c7efc3757252f82 (patch)
tree9012e59f2d271c05a4b6977bb8eff6f77edf17ab /src/gns/plugin_gnsrecord_gns.c
parentee232f9c14bd879235e6586484083ff91addd052 (diff)
downloadgnunet-ffff350361b66d318d8890328c7efc3757252f82.tar.gz
gnunet-ffff350361b66d318d8890328c7efc3757252f82.zip
properly detect and handle parse error
Diffstat (limited to 'src/gns/plugin_gnsrecord_gns.c')
-rw-r--r--src/gns/plugin_gnsrecord_gns.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c
index 5faca4578..5d611e19e 100644
--- a/src/gns/plugin_gnsrecord_gns.c
+++ b/src/gns/plugin_gnsrecord_gns.c
@@ -279,9 +279,10 @@ gns_string_to_value (void *cls,
279 } 279 }
280 *data_size = sizeof (struct GNUNET_TUN_GnsVpnRecord) + strlen (s_serv) + 1; 280 *data_size = sizeof (struct GNUNET_TUN_GnsVpnRecord) + strlen (s_serv) + 1;
281 *data = vpn = GNUNET_malloc (*data_size); 281 *data = vpn = GNUNET_malloc (*data_size);
282 if (GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string ((char*) s_peer, 282 if (GNUNET_OK !=
283 strlen (s_peer), 283 GNUNET_CRYPTO_eddsa_public_key_from_string ((char*) s_peer,
284 &vpn->peer.public_key)) 284 strlen (s_peer),
285 &vpn->peer.public_key))
285 { 286 {
286 GNUNET_free (vpn); 287 GNUNET_free (vpn);
287 *data_size = 0; 288 *data_size = 0;
@@ -362,9 +363,14 @@ gns_string_to_value (void *cls,
362 } 363 }
363 *data_size = sizeof (struct GNUNET_GNSRECORD_ReverseRecord) + strlen (known_by) + 1; 364 *data_size = sizeof (struct GNUNET_GNSRECORD_ReverseRecord) + strlen (known_by) + 1;
364 *data = rev = GNUNET_malloc (*data_size); 365 *data = rev = GNUNET_malloc (*data_size);
365 GNUNET_CRYPTO_ecdsa_public_key_from_string (pkey_str, 366 if (GNUNET_OK !=
366 strlen (pkey_str), 367 GNUNET_CRYPTO_ecdsa_public_key_from_string (pkey_str,
367 &rev->pkey); 368 strlen (pkey_str),
369 &rev->pkey))
370 {
371 GNUNET_free (rev);
372 return GNUNET_SYSERR;
373 }
368 rev->expiration = expiration; 374 rev->expiration = expiration;
369 GNUNET_memcpy (&rev[1], 375 GNUNET_memcpy (&rev[1],
370 known_by, 376 known_by,