summaryrefslogtreecommitdiff
path: root/src/lib/exchange_api_handle.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-10-19 21:06:36 +0200
committerChristian Grothoff <christian@grothoff.org>2021-10-19 21:06:36 +0200
commit7ed66e1e2cb6be47505ee97a82392b1a21155d0a (patch)
tree92a1b65ed0ca346c3165302ad556001c7b2328ba /src/lib/exchange_api_handle.c
parent778a402d07706462818e9c9d01520fd3d8d238d8 (diff)
downloadexchange-7ed66e1e2cb6be47505ee97a82392b1a21155d0a.tar.gz
exchange-7ed66e1e2cb6be47505ee97a82392b1a21155d0a.tar.bz2
exchange-7ed66e1e2cb6be47505ee97a82392b1a21155d0a.zip
-fix null deref
Diffstat (limited to 'src/lib/exchange_api_handle.c')
-rw-r--r--src/lib/exchange_api_handle.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c
index 5ce5285d0..215f122be 100644
--- 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",
&currency),
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 ();