aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2018-04-02 16:35:14 +0200
committerChristian Grothoff <christian@grothoff.org>2018-04-02 16:35:14 +0200
commit8ebb4cda07f92f217f3388eaccabf9589fdb0800 (patch)
treedd6c7d80b604863697d7cfd5e4dfd505673e423b /src
parent40a64e8f0c4da9d99f1352004b572052da1cecb7 (diff)
fix NULL termination of fee list
Diffstat (limited to 'src')
-rw-r--r--src/exchange-lib/exchange_api_wire.c4
-rw-r--r--src/exchange-tools/taler-exchange-wire.c11
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,