From dd7687a5f74f4592dff7149e7f21571ff192ddb4 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Fri, 10 Jun 2016 22:35:38 +0200 Subject: fixing segfault --- src/benchmark/taler-exchange-benchmark.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/benchmark/taler-exchange-benchmark.c b/src/benchmark/taler-exchange-benchmark.c index 06e6622e9..b83c4ab33 100644 --- a/src/benchmark/taler-exchange-benchmark.c +++ b/src/benchmark/taler-exchange-benchmark.c @@ -293,9 +293,10 @@ do_shutdown (void *cls); static void fail (const char *msg) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "%s\n", - msg); + if (NULL != msg) + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "%s\n", + msg); GNUNET_SCHEDULER_shutdown (); return; } @@ -748,8 +749,10 @@ benchmark_run (void *cls) * since that is the only amount refreshed so far by the benchmark * * @param NULL-terminated array of value.fraction pairs + * @return GNUNET_OK if the array is correctly built, GNUNET_SYSERR + * otherwise */ -static void +static unsigned int build_refresh (char **list) { char *amount_str; @@ -765,11 +768,16 @@ build_refresh (char **list) GNUNET_asprintf (&amount_str, "%s:%s", currency, list[i]); TALER_string_to_amount (amount_str, &amount); picked_denom = find_pk (keys, &amount); + if (NULL == picked_denom) + { + return GNUNET_SYSERR; + } size = i; GNUNET_array_append (refresh_pk, size, *picked_denom); GNUNET_free (amount_str); } refresh_pk_len = i; + return GNUNET_OK; } @@ -811,7 +819,12 @@ cert_cb (void *cls, NULL }; - build_refresh (refresh_denoms); + if (GNUNET_SYSERR == build_refresh (refresh_denoms)) + { + fail(NULL); + return; + } + benchmark_task = GNUNET_SCHEDULER_add_now (&benchmark_run, NULL); } -- cgit v1.2.3