From 91f7bab7e45087b6d49cf624e88f5a32135d9fd9 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Wed, 13 Mar 2013 22:14:24 -0700 Subject: [PATCH] Don't let people send more XRP than they have. --- src/cpp/ripple/LedgerEntrySet.cpp | 11 +++++++++-- src/cpp/ripple/RippleCalc.cpp | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/cpp/ripple/LedgerEntrySet.cpp b/src/cpp/ripple/LedgerEntrySet.cpp index 4c3891637b..1096385486 100644 --- a/src/cpp/ripple/LedgerEntrySet.cpp +++ b/src/cpp/ripple/LedgerEntrySet.cpp @@ -1383,8 +1383,15 @@ TER LedgerEntrySet::accountSend(const uint160& uSenderID, const uint160& uReceiv if (sleSender) { - sleSender->setFieldAmount(sfBalance, sleSender->getFieldAmount(sfBalance) - saAmount); - entryModify(sleSender); + if (sleSender->getFieldAmount(sfBalance) < saAmount) + { + terResult = isSetBit(mParams, tapOPEN_LEDGER) ? telFAILED_PROCESSING : tecFAILED_PROCESSING; + } + else + { + sleSender->setFieldAmount(sfBalance, sleSender->getFieldAmount(sfBalance) - saAmount); + entryModify(sleSender); + } } if (sleReceiver) diff --git a/src/cpp/ripple/RippleCalc.cpp b/src/cpp/ripple/RippleCalc.cpp index b3137aa646..f10c10e56b 100644 --- a/src/cpp/ripple/RippleCalc.cpp +++ b/src/cpp/ripple/RippleCalc.cpp @@ -2322,7 +2322,7 @@ TER RippleCalc::calcNodeAccountFwd( saCurDeliverAct = std::min(saCurDeliverAct, psCur.saInReq-psCur.saInAct); // Limit XRP by available. No limit for non-XRP as issuer. - if (!uCurAccountID) + if (!uCurrencyID) saCurDeliverAct = std::min(saCurDeliverAct, lesActive.accountHolds(uCurAccountID, CURRENCY_XRP, ACCOUNT_XRP)); }