commit 7ed66e1e2cb6be47505ee97a82392b1a21155d0a
parent 778a402d07706462818e9c9d01520fd3d8d238d8
Author: Christian Grothoff <christian@grothoff.org>
Date: Tue, 19 Oct 2021 21:06:36 +0200
-fix null deref
Diffstat:
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c
@@ -694,9 +694,8 @@ decode_keys_json (const json_t *resp_obj,
GNUNET_JSON_spec_string ("currency",
¤cy),
GNUNET_JSON_spec_mark_optional (
- TALER_JSON_spec_amount ("wallet_balance_limit_without_kyc",
- currency,
- &key_data->wallet_balance_limit_without_kyc)),
+ TALER_JSON_spec_amount_any ("wallet_balance_limit_without_kyc",
+ &key_data->wallet_balance_limit_without_kyc)),
GNUNET_JSON_spec_end ()
};
@@ -763,6 +762,17 @@ decode_keys_json (const json_t *resp_obj,
(check_sig) ? mspec : &mspec[2],
NULL, NULL));
key_data->currency = GNUNET_strdup (currency);
+
+ if (GNUNET_OK ==
+ TALER_amount_is_valid (&key_data->wallet_balance_limit_without_kyc))
+ {
+ if (0 != strcasecmp (currency,
+ key_data->wallet_balance_limit_without_kyc.currency))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ }
/* parse the master public key and issue date of the response */
if (check_sig)
hash_context = GNUNET_CRYPTO_hash_context_start ();