diff options
author | Marcello Stanisci <marcello.stanisci@inria.fr> | 2016-06-10 22:35:38 +0200 |
---|---|---|
committer | Marcello Stanisci <marcello.stanisci@inria.fr> | 2016-06-10 22:35:38 +0200 |
commit | dd7687a5f74f4592dff7149e7f21571ff192ddb4 (patch) | |
tree | 55e116d48d08750e4a4de7c81d2032dff1ecedc4 | |
parent | 1db423907ee425d07045438ed8a71dde6669b99a (diff) | |
download | exchange-dd7687a5f74f4592dff7149e7f21571ff192ddb4.tar.xz |
fixing segfault
-rw-r--r-- | src/benchmark/taler-exchange-benchmark.c | 23 |
1 files changed, 18 insertions, 5 deletions
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); } |