diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-04-02 16:35:14 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-04-02 16:35:14 +0200 |
commit | 8ebb4cda07f92f217f3388eaccabf9589fdb0800 (patch) | |
tree | dd6c7d80b604863697d7cfd5e4dfd505673e423b | |
parent | 40a64e8f0c4da9d99f1352004b572052da1cecb7 (diff) |
fix NULL termination of fee list
-rw-r--r-- | src/exchange-lib/exchange_api_wire.c | 4 | ||||
-rw-r--r-- | src/exchange-tools/taler-exchange-wire.c | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/exchange-lib/exchange_api_wire.c b/src/exchange-lib/exchange_api_wire.c index 12789b2bc..6537e6c10 100644 --- a/src/exchange-lib/exchange_api_wire.c +++ b/src/exchange-lib/exchange_api_wire.c @@ -167,8 +167,10 @@ parse_fees (json_t *fees) free_fees (fm); return NULL; } - if (idx < len) + if (idx + 1 < len) wa->next = &fe->fee_list[idx + 1]; + else + wa->next = NULL; } } return fm; diff --git a/src/exchange-tools/taler-exchange-wire.c b/src/exchange-tools/taler-exchange-wire.c index 390c0e5e3..6daf3de27 100644 --- a/src/exchange-tools/taler-exchange-wire.c +++ b/src/exchange-tools/taler-exchange-wire.c @@ -76,6 +76,16 @@ sign_account_data (void *cls, JSON_INDENT(2)); json_decref (wire); GNUNET_assert (NULL != json_out); + if (GNUNET_OK != + GNUNET_DISK_directory_create_for_file (ai->wire_response_filename)) + { + GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, + "mkdir", + ai->wire_response_filename); + global_ret = 1; + free (json_out); + return; + } out = fopen (ai->wire_response_filename, "w+"); @@ -85,6 +95,7 @@ sign_account_data (void *cls, "fopen", ai->wire_response_filename); global_ret = 1; + free (json_out); return; } fprintf (out, |