From 6e31c04e908b98f6c9cb347eb36ccc47bde590a7 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 7 Jun 2014 14:08:58 +0000 Subject: [PATCH] fix boxed value parser --- src/gns/plugin_gnsrecord_gns.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/gns/plugin_gnsrecord_gns.c b/src/gns/plugin_gnsrecord_gns.c index 5675599dd..e1e18ea48 100644 --- a/src/gns/plugin_gnsrecord_gns.c +++ b/src/gns/plugin_gnsrecord_gns.c @@ -263,29 +263,32 @@ gns_string_to_value (void *cls, case GNUNET_GNSRECORD_TYPE_BOX: { struct GNUNET_GNSRECORD_BoxRecord *box; - size_t slen = strlen (s) + 1; - char rest[slen]; + size_t rest; unsigned int protocol; unsigned int service; unsigned int record_type; void *bval; size_t bval_size; - if (4 != SSCANF (s, - "%u %u %u %s", + if (3 != SSCANF (s, + "%u %u %u ", &protocol, &service, - &record_type, - rest)) + &record_type)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Unable to parse BOX record string `%s'\n"), s); return GNUNET_SYSERR; } + rest = snprintf (NULL, 0, + "%u %u %u ", + protocol, + service, + record_type); if (GNUNET_OK != GNUNET_GNSRECORD_string_to_value (record_type, - rest, + &s[rest], &bval, &bval_size)) return GNUNET_SYSERR; -- 2.25.1