aboutsummaryrefslogtreecommitdiff
path: root/src/gns/plugin_gnsrecord_gns.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-06-07 14:08:58 +0000
committerChristian Grothoff <christian@grothoff.org>2014-06-07 14:08:58 +0000
commit6e31c04e908b98f6c9cb347eb36ccc47bde590a7 (patch)
tree55eb960e24a041f29d95564bf36b38309719bd81 /src/gns/plugin_gnsrecord_gns.c
parent744699bfdfd0eb37431ab8354bc3d866251fbec7 (diff)
downloadgnunet-6e31c04e908b98f6c9cb347eb36ccc47bde590a7.tar.gz
gnunet-6e31c04e908b98f6c9cb347eb36ccc47bde590a7.zip
fix boxed value parser
Diffstat (limited to 'src/gns/plugin_gnsrecord_gns.c')
-rw-r--r--src/gns/plugin_gnsrecord_gns.c17
1 files 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,
263 case GNUNET_GNSRECORD_TYPE_BOX: 263 case GNUNET_GNSRECORD_TYPE_BOX:
264 { 264 {
265 struct GNUNET_GNSRECORD_BoxRecord *box; 265 struct GNUNET_GNSRECORD_BoxRecord *box;
266 size_t slen = strlen (s) + 1; 266 size_t rest;
267 char rest[slen];
268 unsigned int protocol; 267 unsigned int protocol;
269 unsigned int service; 268 unsigned int service;
270 unsigned int record_type; 269 unsigned int record_type;
271 void *bval; 270 void *bval;
272 size_t bval_size; 271 size_t bval_size;
273 272
274 if (4 != SSCANF (s, 273 if (3 != SSCANF (s,
275 "%u %u %u %s", 274 "%u %u %u ",
276 &protocol, 275 &protocol,
277 &service, 276 &service,
278 &record_type, 277 &record_type))
279 rest))
280 { 278 {
281 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 279 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
282 _("Unable to parse BOX record string `%s'\n"), 280 _("Unable to parse BOX record string `%s'\n"),
283 s); 281 s);
284 return GNUNET_SYSERR; 282 return GNUNET_SYSERR;
285 } 283 }
284 rest = snprintf (NULL, 0,
285 "%u %u %u ",
286 protocol,
287 service,
288 record_type);
286 if (GNUNET_OK != 289 if (GNUNET_OK !=
287 GNUNET_GNSRECORD_string_to_value (record_type, 290 GNUNET_GNSRECORD_string_to_value (record_type,
288 rest, 291 &s[rest],
289 &bval, 292 &bval,
290 &bval_size)) 293 &bval_size))
291 return GNUNET_SYSERR; 294 return GNUNET_SYSERR;