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:
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),