diff options
Diffstat (limited to 'src/lib/exchange_api_common.c')
-rw-r--r-- | src/lib/exchange_api_common.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c index d60327831..9cbcdeb26 100644 --- a/src/lib/exchange_api_common.c +++ b/src/lib/exchange_api_common.c @@ -398,6 +398,7 @@ parse_merge (struct TALER_EXCHANGE_ReserveHistoryEntry *rh, const json_t *transaction) { uint32_t flags32; + struct TALER_Amount total; struct GNUNET_JSON_Specification merge_spec[] = { GNUNET_JSON_spec_fixed_auto ("h_contract_terms", &rh->details.merge_details.h_contract_terms), @@ -433,13 +434,21 @@ parse_merge (struct TALER_EXCHANGE_ReserveHistoryEntry *rh, } rh->details.merge_details.flags = (enum TALER_WalletAccountMergeFlags) flags32; + if (0 > + TALER_amount_add (&total, + &rh->amount, + &rh->details.merge_details.purse_fee)) + { + GNUNET_break_op (0); + return GNUNET_SYSERR; + } if (GNUNET_OK != TALER_wallet_account_merge_verify ( rh->details.merge_details.merge_timestamp, &rh->details.merge_details.purse_pub, rh->details.merge_details.purse_expiration, &rh->details.merge_details.h_contract_terms, - &rh->amount, + &total, &rh->details.merge_details.purse_fee, rh->details.merge_details.min_age, rh->details.merge_details.flags, |