From e2fb75046fee67e741f3b15b9c3b2f81f26324b6 Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Fri, 28 Sep 2012 12:29:44 -0700 Subject: [PATCH 1/2] RPC: Fix parsing of ripple options limit and average. --- src/RPCServer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index 202f0e5e3..4028d8496 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -1451,7 +1451,7 @@ Json::Value RPCServer::doRipple(const Json::Value ¶ms) bLimit = params.size() != iArg ? params[iArg].asString() == "limit" : false; bAverage = params.size() != iArg ? params[iArg].asString() == "average" : false; - if (!bPartial && !bFull) + if (!bLimit && !bAverage) { return RPCError(rpcINVALID_PARAMS); } From 9f2b38a441ec2d5c94b0cca3593bacfa541cde4d Mon Sep 17 00:00:00 2001 From: Arthur Britto Date: Fri, 28 Sep 2012 12:30:29 -0700 Subject: [PATCH 2/2] TransactionEngine: do not allow bad transfer rate to be set. --- src/TransactionAction.cpp | 10 ++++++++-- src/TransactionErr.cpp | 2 ++ src/TransactionErr.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/TransactionAction.cpp b/src/TransactionAction.cpp index 16d2e3f1e..f37ef5a31 100644 --- a/src/TransactionAction.cpp +++ b/src/TransactionAction.cpp @@ -166,18 +166,24 @@ TER TransactionEngine::doAccountSet(const SerializedTransaction& txn) { uint32 uRate = txn.getITFieldU32(sfTransferRate); - if (!uRate) + if (!uRate || uRate == QUALITY_ONE) { Log(lsINFO) << "doAccountSet: unset transfer rate"; mTxnAccount->makeIFieldAbsent(sfTransferRate); } - else + else if (uRate > QUALITY_ONE) { Log(lsINFO) << "doAccountSet: set transfer rate"; mTxnAccount->setIFieldU32(sfTransferRate, uRate); } + else + { + Log(lsINFO) << "doAccountSet: bad transfer rate"; + + return temBAD_TRANSFER_RATE; + } } // diff --git a/src/TransactionErr.cpp b/src/TransactionErr.cpp index 878d7cd1c..85ea95594 100644 --- a/src/TransactionErr.cpp +++ b/src/TransactionErr.cpp @@ -31,6 +31,7 @@ bool transResultInfo(TER terCode, std::string& strToken, std::string& strHuman) { temBAD_PATH, "temBAD_PATH", "Malformed." }, { temBAD_PATH_LOOP, "temBAD_PATH_LOOP", "Malformed." }, { temBAD_PUBLISH, "temBAD_PUBLISH", "Malformed: bad publish." }, + { temBAD_TRANSFER_RATE, "temBAD_TRANSFER_RATE", "Malformed: transfer rate must be >= 1.0" }, { temBAD_SET_ID, "temBAD_SET_ID", "Malformed." }, { temCREATEXNS, "temCREATEXNS", "Can not specify non XNS for Create." }, { temDST_IS_SRC, "temDST_IS_SRC", "Destination may not be source." }, @@ -89,3 +90,4 @@ std::string transHuman(TER terCode) return transResultInfo(terCode, strToken, strHuman) ? strHuman : "-"; } +// vim:ts=4 diff --git a/src/TransactionErr.h b/src/TransactionErr.h index 4f0d5a799..7ce5cd610 100644 --- a/src/TransactionErr.h +++ b/src/TransactionErr.h @@ -33,6 +33,7 @@ enum TER // aka TransactionEngineResult temBAD_PATH, temBAD_PATH_LOOP, temBAD_PUBLISH, + temBAD_TRANSFER_RATE, temBAD_SET_ID, temCREATEXNS, temDST_IS_SRC,