From 3e7504d9d7f1d9729a1083fa9a05444075e61bfc Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Tue, 23 Apr 2013 16:18:24 -0700 Subject: [PATCH] Disallow rippling to self. --- src/cpp/ripple/LedgerEntrySet.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cpp/ripple/LedgerEntrySet.cpp b/src/cpp/ripple/LedgerEntrySet.cpp index aec83902eb..c93b2f0df9 100644 --- a/src/cpp/ripple/LedgerEntrySet.cpp +++ b/src/cpp/ripple/LedgerEntrySet.cpp @@ -1337,13 +1337,18 @@ TER LedgerEntrySet::trustDelete(SLE::ref sleRippleState, const uint160& uLowAcco // Direct send w/o fees: // - Redeeming IOUs and/or sending sender's own IOUs. // - Create trust line of needed. +// --> bCheckIssuer : normally require issuer to be involved. TER LedgerEntrySet::rippleCredit(const uint160& uSenderID, const uint160& uReceiverID, const STAmount& saAmount, bool bCheckIssuer) { uint160 uIssuerID = saAmount.getIssuer(); uint160 uCurrencyID = saAmount.getCurrency(); + // Make sure issuer is involved. assert(!bCheckIssuer || uSenderID == uIssuerID || uReceiverID == uIssuerID); + // Disallow sending to self. + assert(uSenderID != uReceiverID); + bool bSenderHigh = uSenderID > uReceiverID; uint256 uIndex = Ledger::getRippleStateIndex(uSenderID, uReceiverID, saAmount.getCurrency()); SLE::pointer sleRippleState = entryCache(ltRIPPLE_STATE, uIndex); @@ -1447,6 +1452,7 @@ TER LedgerEntrySet::rippleSend(const uint160& uSenderID, const uint160& uReceive TER terResult; assert(!!uSenderID && !!uReceiverID); + assert(uSenderID != uReceiverID); if (uSenderID == uIssuerID || uReceiverID == uIssuerID || uIssuerID == ACCOUNT_ONE) {