-more minor bugfixes

This commit is contained in:
Christian Grothoff 2022-06-07 16:57:12 +02:00
parent f0bcbf6586
commit 446761b602
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
5 changed files with 58 additions and 47 deletions

View File

@ -842,21 +842,17 @@ help_melt (struct CoinHistoryParseContext *pc,
return GNUNET_SYSERR;
}
if (NULL != pc->dk)
/* check that melt fee matches our expectations from /keys! */
if ( (GNUNET_YES !=
TALER_amount_cmp_currency (&melt_fee,
&pc->dk->fees.refresh)) ||
(0 !=
TALER_amount_cmp (&melt_fee,
&pc->dk->fees.refresh)) )
{
/* check that melt fee matches our expectations from /keys! */
if ( (GNUNET_YES !=
TALER_amount_cmp_currency (&melt_fee,
&pc->dk->fees.refresh)) ||
(0 !=
TALER_amount_cmp (&melt_fee,
&pc->dk->fees.refresh)) )
{
GNUNET_break_op (0);
return GNUNET_SYSERR;
}
GNUNET_break_op (0);
return GNUNET_SYSERR;
}
if (GNUNET_OK !=
TALER_wallet_melt_verify (
amount,
@ -938,26 +934,23 @@ help_refund (struct CoinHistoryParseContext *pc,
return GNUNET_SYSERR;
}
/* NOTE: theoretically, we could also check that the given
merchant_pub and h_contract_terms appear in the
history under deposits. However, there is really no benefit
for the exchange to lie here, so not checking is probably OK
(an auditor ought to check, though). Then again, we similarly
had no reason to check the merchant's signature (other than a
well-formendess check). */
merchant_pub and h_contract_terms appear in the
history under deposits. However, there is really no benefit
for the exchange to lie here, so not checking is probably OK
(an auditor ought to check, though). Then again, we similarly
had no reason to check the merchant's signature (other than a
well-formendess check). */
/* check that refund fee matches our expectations from /keys! */
if (NULL != pc->dk)
if ( (GNUNET_YES !=
TALER_amount_cmp_currency (&refund_fee,
&pc->dk->fees.refund)) ||
(0 !=
TALER_amount_cmp (&refund_fee,
&pc->dk->fees.refund)) )
{
if ( (GNUNET_YES !=
TALER_amount_cmp_currency (&refund_fee,
&pc->dk->fees.refund)) ||
(0 !=
TALER_amount_cmp (&refund_fee,
&pc->dk->fees.refund)) )
{
GNUNET_break_op (0);
return GNUNET_SYSERR;
}
GNUNET_break_op (0);
return GNUNET_SYSERR;
}
return GNUNET_NO;
}

View File

@ -406,8 +406,9 @@ TALER_EXCHANGE_account_merge (
{
struct TALER_Amount zero_purse_fee;
TALER_amount_set_zero (purse_value_after_fees->currency,
&zero_purse_fee);
GNUNET_assert (GNUNET_OK ==
TALER_amount_set_zero (purse_value_after_fees->currency,
&zero_purse_fee));
TALER_wallet_account_merge_sign (merge_timestamp,
purse_pub,
purse_expiration,

View File

@ -1,6 +1,6 @@
/*
This file is part of TALER
Copyright (C) 2014-2021 Taler Systems SA
Copyright (C) 2014-2022 Taler Systems SA
TALER is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
@ -445,17 +445,30 @@ verify_conflict_history_ok (struct TALER_EXCHANGE_RefundHandle *rh,
{
rtotal = rh->refund_amount;
}
if (-1 == TALER_amount_cmp (&dtotal,
if ( (have_refund) && (! have_deposit) )
{
GNUNET_break (0);
GNUNET_JSON_parse_free (spec);
return GNUNET_SYSERR;
}
if (! (have_refund && have_deposit))
{
/* need both for a refund-deposit conflict proof */
GNUNET_break (0);
GNUNET_JSON_parse_free (spec);
return GNUNET_SYSERR;
}
if (-1 != TALER_amount_cmp (&dtotal,
&rtotal))
{
/* dtotal < rtotal: good! */
/* rtotal <= dtotal is fine, no conflict! */
GNUNET_break_op (0);
GNUNET_JSON_parse_free (spec);
return GNUNET_OK;
return GNUNET_SYSERR;
}
/* this fails to prove a conflict */
GNUNET_break_op (0);
/* dtotal < rtotal: that's a conflict! */
GNUNET_JSON_parse_free (spec);
return GNUNET_SYSERR;
return GNUNET_OK;
}

View File

@ -311,6 +311,7 @@ TALER_EXCHANGE_reserves_history (
if (NULL == keys)
{
GNUNET_break (0);
curl_easy_cleanup (eh);
GNUNET_free (rsh->url);
GNUNET_free (rsh);
return NULL;
@ -320,6 +321,7 @@ TALER_EXCHANGE_reserves_history (
if (NULL == gf)
{
GNUNET_break_op (0);
curl_easy_cleanup (eh);
GNUNET_free (rsh->url);
GNUNET_free (rsh);
return NULL;

View File

@ -164,14 +164,16 @@ insert_deposit_run (void *cls,
0,
sizeof (deposit));
GNUNET_CRYPTO_kdf (&merchant_priv,
sizeof (struct TALER_MerchantPrivateKeyP),
"merchant-priv",
strlen ("merchant-priv"),
ids->merchant_name,
strlen (ids->merchant_name),
NULL,
0);
GNUNET_assert (
GNUNET_YES ==
GNUNET_CRYPTO_kdf (&merchant_priv,
sizeof (struct TALER_MerchantPrivateKeyP),
"merchant-priv",
strlen ("merchant-priv"),
ids->merchant_name,
strlen (ids->merchant_name),
NULL,
0));
GNUNET_CRYPTO_eddsa_key_get_public (&merchant_priv.eddsa_priv,
&deposit.merchant_pub.eddsa_pub);
GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK,