-check consistency of amount with purpose's amount
This commit is contained in:
parent
6d323a50d2
commit
f0c8858825
@ -213,15 +213,53 @@ verify_deposit_signature_forbidden (const struct TALER_MINT_DepositHandle *dh,
|
|||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
switch (purpose->purpose)
|
switch (ntohl (purpose->purpose))
|
||||||
{
|
{
|
||||||
case TALER_SIGNATURE_WALLET_COIN_DEPOSIT:
|
case TALER_SIGNATURE_WALLET_COIN_DEPOSIT:
|
||||||
|
{
|
||||||
|
const struct TALER_DepositRequestPS *dr;
|
||||||
|
struct TALER_Amount dr_amount;
|
||||||
|
|
||||||
|
if (ntohl (purpose->size) != sizeof (struct TALER_DepositRequestPS))
|
||||||
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
/* FIXME: check amount! #3516 */
|
MAJ_parse_free (spec);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
dr = (const struct TALER_DepositRequestPS *) purpose;
|
||||||
|
TALER_amount_ntoh (&dr_amount,
|
||||||
|
&dr->amount_with_fee);
|
||||||
|
if (0 != TALER_amount_cmp (&dr_amount,
|
||||||
|
&amount))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
MAJ_parse_free (spec);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case TALER_SIGNATURE_WALLET_COIN_MELT:
|
case TALER_SIGNATURE_WALLET_COIN_MELT:
|
||||||
|
{
|
||||||
|
const struct TALER_RefreshMeltCoinAffirmationPS *rm;
|
||||||
|
struct TALER_Amount rm_amount;
|
||||||
|
|
||||||
|
if (ntohl (purpose->size) != sizeof (struct TALER_RefreshMeltCoinAffirmationPS))
|
||||||
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
/* FIXME: check amount! #3516 */
|
MAJ_parse_free (spec);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
rm = (const struct TALER_RefreshMeltCoinAffirmationPS *) purpose;
|
||||||
|
TALER_amount_ntoh (&rm_amount,
|
||||||
|
&rm->amount_with_fee);
|
||||||
|
if (0 != TALER_amount_cmp (&rm_amount,
|
||||||
|
&amount))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
MAJ_parse_free (spec);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* signature not supported, new version on server? */
|
/* signature not supported, new version on server? */
|
||||||
@ -234,7 +272,7 @@ verify_deposit_signature_forbidden (const struct TALER_MINT_DepositHandle *dh,
|
|||||||
&total,
|
&total,
|
||||||
&amount))
|
&amount))
|
||||||
{
|
{
|
||||||
/* overflow in history already!? inconceivable! */
|
/* overflow in history already!? inconceivable! Bad mint! */
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
MAJ_parse_free (spec);
|
MAJ_parse_free (spec);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
|
Loading…
Reference in New Issue
Block a user