Validate the tx_json field in sign_for (RIPD-1100)

This commit is contained in:
Nik Bougalis
2016-03-31 00:26:40 -07:00
parent 8dbad62153
commit 60ff83f280
2 changed files with 48 additions and 2 deletions

View File

@@ -785,6 +785,9 @@ static Json::Value checkMultiSignFields (Json::Value const& jvRequest)
Json::Value const& tx_json (jvRequest [jss::tx_json]);
if (!tx_json.isObject())
return RPC::invalid_field_message (jss::tx_json);
// There are a couple of additional fields we need to check before
// we serialize. If we serialize first then we generate less useful
//error messages.
@@ -878,13 +881,17 @@ Json::Value transactionSignFor (
RPC::invalid_field_message (accountField));
}
// If the tx_json.SigningPubKey field is missing, insert an empty one.
// RIPD-1036.
if (! jvRequest.isMember (jss::tx_json))
return RPC::missing_field_error (jss::tx_json);
{
Json::Value& tx_json (jvRequest [jss::tx_json]);
if (!tx_json.isObject())
return RPC::object_field_error (jss::tx_json);
// If the tx_json.SigningPubKey field is missing,
// insert an empty one.
if (!tx_json.isMember (sfSigningPubKey.getJsonName()))
tx_json[sfSigningPubKey.getJsonName()] = "";
}