commit 17d62b32745769195aa9a98223811ceebf149c91
parent 0ae37f324356f916fdb10380e17a3ce9aec37b68
Author: Christian Grothoff <christian@grothoff.org>
Date: Mon, 29 Jun 2026 18:44:31 +0200
bugfixes
Diffstat:
6 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/src/auditor/taler-helper-auditor-coins.c b/src/auditor/taler-helper-auditor-coins.c
@@ -2640,8 +2640,8 @@ analyze_coins (void *cls)
}
if (0 > iqs)
{
- GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
- return qs;
+ GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == iqs);
+ return iqs;
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Analyzing coins\n");
diff --git a/src/auditordb/get_row_inconsistency.c b/src/auditordb/get_row_inconsistency.c
@@ -151,17 +151,17 @@ TALER_AUDITORDB_get_row_inconsistency (
" FROM auditor_row_inconsistency"
" WHERE (row_id > $1)"
" AND ($2 OR suppressed is false)"
- " ORDER BY row_id DESC"
+ " ORDER BY row_id ASC"
" LIMIT $3"
);
- qs = GNUNET_PQ_eval_prepared_multi_select (pg->conn,
- (limit > 0) ?
- "auditor_row_inconsistency_select_asc"
- :
- "auditor_row_inconsistency_select_desc",
- params,
- &row_inconsistency_cb,
- &dcc);
+ qs = GNUNET_PQ_eval_prepared_multi_select (
+ pg->conn,
+ (limit > 0)
+ ? "auditor_row_inconsistency_select_asc"
+ : "auditor_row_inconsistency_select_desc",
+ params,
+ &row_inconsistency_cb,
+ &dcc);
if (qs > 0)
diff --git a/src/bank-lib/fakebank_twg_history.c b/src/bank-lib/fakebank_twg_history.c
@@ -127,7 +127,7 @@ TALER_FAKEBANK_twg_get_debit_history_ (
bool skip = true;
dir = (0 > hc->ha.delta) ? (h->ram_limit - 1) : 1;
- overflow = (t->row_id != hc->ha.start_idx);
+ overflow = (NULL != t) && (t->row_id != hc->ha.start_idx);
/* If account does not match, linear scan for
first matching account. */
while ( (! overflow) &&
diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c
@@ -517,8 +517,6 @@ parse_json_auditor (struct TALER_EXCHANGE_AuditorInformation *auditor,
#endif
return GNUNET_SYSERR;
}
- auditor->auditor_url = GNUNET_strdup (auditor_url);
- auditor->auditor_name = GNUNET_strdup (auditor_name);
auditor->denom_keys
= GNUNET_new_array (json_array_size (keys),
struct TALER_EXCHANGE_AuditorDenominationInfo);
@@ -578,6 +576,7 @@ parse_json_auditor (struct TALER_EXCHANGE_AuditorInformation *auditor,
&auditor_sig))
{
GNUNET_break_op (0);
+ GNUNET_free (auditor->denom_keys);
return GNUNET_SYSERR;
}
}
@@ -588,9 +587,12 @@ parse_json_auditor (struct TALER_EXCHANGE_AuditorInformation *auditor,
if (pos > UINT_MAX)
{
GNUNET_break (0);
+ GNUNET_free (auditor->denom_keys);
return GNUNET_SYSERR;
}
auditor->num_denom_keys = (unsigned int) pos;
+ auditor->auditor_url = GNUNET_strdup (auditor_url);
+ auditor->auditor_name = GNUNET_strdup (auditor_name);
return GNUNET_OK;
}
@@ -900,7 +902,9 @@ parse_wads (const json_t *wads_array,
* @param[out] key_data where to store the results we decoded
* @param[out] vc where to store version compatibility data
* @return #GNUNET_OK on success, #GNUNET_SYSERR on error
- * (malformed JSON)
+ * (malformed JSON); on #GNUNET_SYSERR, the @a key_data
+ * structure may be partially initialized and must still
+ * be released using #TALER_EXCHANGE_keys_decref()!
*/
enum GNUNET_GenericReturnValue
TALER_EXCHANGE_decode_keys_json_ (
@@ -1721,6 +1725,9 @@ TALER_EXCHANGE_keys_from_json (const json_t *j)
return NULL; /* unsupported version */
}
keys = GNUNET_new (struct TALER_EXCHANGE_Keys);
+ keys->rc = 1;
+ keys->key_data_expiration = expire;
+ keys->exchange_url = GNUNET_strdup (url);
if (GNUNET_OK !=
TALER_EXCHANGE_decode_keys_json_ (jkeys,
false,
@@ -1728,11 +1735,9 @@ TALER_EXCHANGE_keys_from_json (const json_t *j)
&compat))
{
GNUNET_break (0);
+ TALER_EXCHANGE_keys_decref (keys);
return NULL;
}
- keys->rc = 1;
- keys->key_data_expiration = expire;
- keys->exchange_url = GNUNET_strdup (url);
return keys;
}
diff --git a/src/lib/exchange_api_post-batch-deposit.c b/src/lib/exchange_api_post-batch-deposit.c
@@ -138,7 +138,8 @@ struct TALER_EXCHANGE_PostBatchDepositHandle
struct TALER_MerchantWireHashP h_wire;
/**
- * Hash over the extensions, or all zero.
+ * Hash over "policy extensions" which were removed as a feature.
+ * For now always all zeros!
*/
struct TALER_ExtensionPolicyHashP h_policy;
@@ -639,9 +640,6 @@ TALER_EXCHANGE_post_batch_deposit_create (
num_cdds * sizeof (*cdds));
dh->num_cdds = num_cdds;
dh->dcd = *dcd;
- if (NULL != dcd->policy_details)
- TALER_deposit_policy_hash (dcd->policy_details,
- &dh->h_policy);
TALER_merchant_wire_signature_hash (dcd->merchant_payto_uri,
&dcd->wire_salt,
&dh->h_wire);
@@ -745,9 +743,6 @@ TALER_EXCHANGE_post_batch_deposit_create (
GNUNET_JSON_pack_allow_null (
GNUNET_JSON_pack_data_auto ("wallet_data_hash",
wallet_data_hashp)),
- GNUNET_JSON_pack_allow_null (
- GNUNET_JSON_pack_object_steal ("policy",
- (json_t *) dcd->policy_details)),
GNUNET_JSON_pack_timestamp ("timestamp",
dcd->wallet_timestamp),
GNUNET_JSON_pack_data_auto ("merchant_pub",
diff --git a/src/lib/exchange_api_post-melt.c b/src/lib/exchange_api_post-melt.c
@@ -481,9 +481,9 @@ fail_mh (struct TALER_EXCHANGE_PostMeltHandle *mh,
* @param bpr response details
*/
static void
-blinding_prepare_cb (void *cls,
- const struct TALER_EXCHANGE_PostBlindingPrepareResponse *
- bpr)
+blinding_prepare_cb (
+ void *cls,
+ const struct TALER_EXCHANGE_PostBlindingPrepareResponse *bpr)
{
struct TALER_EXCHANGE_PostMeltHandle *mh = cls;
unsigned int nks_off = 0;
@@ -616,7 +616,7 @@ TALER_EXCHANGE_post_melt_start (
}
TALER_cs_refresh_seed_to_blinding_seed (
&mh->rms,
- &mh->md.melted_coin.coin_priv,
+ &mh->rd->melt_priv,
&mh->blinding_seed);
mh->bpr = TALER_EXCHANGE_post_blinding_prepare_for_melt_create (
mh->cctx,