exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 6af7b5f0002277ef06a6de2b98bff01dda5094d1
parent aaaf3d9eddb378eaa0497e098adf3da2fff60a93
Author: Florian Dold <florian@dold.me>
Date:   Sat, 22 Feb 2025 20:26:22 +0100

do not insert an empty list of zero measures

Diffstat:
Msrc/include/taler_kyclogic_lib.h | 3++-
Msrc/kyclogic/kyclogic_api.c | 16+++++++++++-----
2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/include/taler_kyclogic_lib.h b/src/include/taler_kyclogic_lib.h @@ -426,7 +426,8 @@ TALER_KYCLOGIC_get_aml_program_fallback (const char *prog_name); * has performed any operation. * * @param lrs rule set to investigate, NULL for default - * @return LegitimizationMeasures, NULL on error + * @return LegitimizationMeasures, NULL if there are no + * zero measures */ json_t * TALER_KYCLOGIC_zero_measures ( diff --git a/src/kyclogic/kyclogic_api.c b/src/kyclogic/kyclogic_api.c @@ -1129,15 +1129,14 @@ TALER_KYCLOGIC_zero_measures ( { json_t *zero_measures; const struct TALER_KYCLOGIC_KycRule *rules; - unsigned int num_rules; + unsigned int num_zero_measures = 0; if (NULL == lrs) lrs = &default_rules; rules = lrs->kyc_rules; - num_rules = lrs->num_kyc_rules; zero_measures = json_array (); GNUNET_assert (NULL != zero_measures); - for (unsigned int i = 0; i<num_rules; i++) + for (unsigned int i = 0; i<lrs->num_kyc_rules; i++) { const struct TALER_KYCLOGIC_KycRule *rule = &rules[i]; @@ -1156,9 +1155,10 @@ TALER_KYCLOGIC_zero_measures ( rule->next_measures[j]); if (NULL == ms) { + /* Error in the configuration, should've been + * caught before. We simply ignore the bad measure. */ GNUNET_break (0); - json_decref (zero_measures); - return NULL; + continue; } if (0 == strcasecmp (KYC_MEASURE_IMPOSSIBLE, ms->check_name)) @@ -1179,8 +1179,14 @@ TALER_KYCLOGIC_zero_measures ( GNUNET_assert (0 == json_array_append_new (zero_measures, mi)); + num_zero_measures++; } } + if (num_zero_measures == 0) + { + json_decref (zero_measures); + return NULL; + } return GNUNET_JSON_PACK ( GNUNET_JSON_pack_array_steal ("measures", zero_measures),