From ee4f1c1002f84118b7f0de592e505d3915437ad5 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 1 Sep 2020 23:59:16 +0200 Subject: fix #6553: compute residual coin value correctly in melt conflict response --- contrib/gana | 2 +- src/exchange/taler-exchange-httpd_melt.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/contrib/gana b/contrib/gana index 18a39c297..0b778cdac 160000 --- a/contrib/gana +++ b/contrib/gana @@ -1 +1 @@ -Subproject commit 18a39c29726860af58800a28454446154b89832b +Subproject commit 0b778cdac372d0b75f3b64501a15a21c9c57f36e diff --git a/src/exchange/taler-exchange-httpd_melt.c b/src/exchange/taler-exchange-httpd_melt.c index f276a72b5..872389543 100644 --- a/src/exchange/taler-exchange-httpd_melt.c +++ b/src/exchange/taler-exchange-httpd_melt.c @@ -254,11 +254,20 @@ refresh_check_melt (struct MHD_Connection *connection, &spent)) { struct TALER_Amount coin_residual; + struct TALER_Amount spent_already; + /* First subtract the melt cost from 'spent' to + compute the total amount already spent of the coin */ GNUNET_assert (0 <= - TALER_amount_subtract (&coin_residual, + TALER_amount_subtract (&spent_already, &spent, &rmc->refresh_session.amount_with_fee)); + /* The residual coin value is the original coin value minus + what we have spent (before the melt) */ + GNUNET_assert (0 <= + TALER_amount_subtract (&coin_residual, + &rmc->coin_value, + &spent_already)); *mhd_ret = reply_melt_insufficient_funds ( connection, &rmc->refresh_session.coin.coin_pub, -- cgit v1.2.3