diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-10-19 21:06:36 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-10-19 21:06:36 +0200 |
commit | 7ed66e1e2cb6be47505ee97a82392b1a21155d0a (patch) | |
tree | 92a1b65ed0ca346c3165302ad556001c7b2328ba /src/lib | |
parent | 778a402d07706462818e9c9d01520fd3d8d238d8 (diff) | |
download | exchange-7ed66e1e2cb6be47505ee97a82392b1a21155d0a.tar.xz |
-fix null deref
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/exchange_api_handle.c | 16 |
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", ¤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 (); |