Merge pull request #192 from lbryio/verify_claimid

Do not create transactions with incorrect claims
This commit is contained in:
lbrynaut 2018-09-04 08:17:47 -05:00 committed by GitHub
commit 72cbc491be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -426,6 +426,10 @@ UniValue claimname(const UniValue& params, bool fHelp)
); );
string sName = params[0].get_str(); string sName = params[0].get_str();
string sValue = params[1].get_str(); string sValue = params[1].get_str();
if (!IsHex(sValue))
throw JSONRPCError(RPC_INVALID_PARAMETER, "value must be hexadecimal");
std::vector<unsigned char> vchName (sName.begin(), sName.end()); std::vector<unsigned char> vchName (sName.begin(), sName.end());
std::vector<unsigned char> vchValue(ParseHex(sValue)); std::vector<unsigned char> vchValue(ParseHex(sValue));
@ -513,6 +517,10 @@ UniValue updateclaim(const UniValue& params, bool fHelp)
std::vector<unsigned char> vchName; std::vector<unsigned char> vchName;
string sValue = params[1].get_str(); string sValue = params[1].get_str();
if (!IsHex(sValue))
throw JSONRPCError(RPC_INVALID_PARAMETER, "value must be hexadecimal");
std::vector<unsigned char> vchValue(ParseHex(sValue)); std::vector<unsigned char> vchValue(ParseHex(sValue));
CAmount nAmount = AmountFromValue(params[2]); CAmount nAmount = AmountFromValue(params[2]);
@ -534,6 +542,9 @@ UniValue updateclaim(const UniValue& params, bool fHelp)
{ {
if (DecodeClaimScript(wtx.vout[i].scriptPubKey, op, vvchParams)) if (DecodeClaimScript(wtx.vout[i].scriptPubKey, op, vvchParams))
{ {
if (op == OP_SUPPORT_CLAIM)
continue;
vchName = vvchParams[0]; vchName = vvchParams[0];
EnsureWalletIsUnlocked(); EnsureWalletIsUnlocked();
if (op == OP_CLAIM_NAME) if (op == OP_CLAIM_NAME)
@ -848,6 +859,14 @@ UniValue supportclaim(const UniValue& params, bool fHelp)
string sName = params[0].get_str(); string sName = params[0].get_str();
string sClaimId = params[1].get_str(); string sClaimId = params[1].get_str();
const size_t claimLength = 40;
if (!IsHex(sClaimId))
throw JSONRPCError(RPC_INVALID_PARAMETER, "claimid must be a 20-character hexadecimal string (not '" + sClaimId + "')");
if (sClaimId.length() != claimLength)
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("claimid must be of length %d", claimLength));
uint160 claimId; uint160 claimId;
claimId.SetHex(sClaimId); claimId.SetHex(sClaimId);
std::vector<unsigned char> vchName (sName.begin(), sName.end()); std::vector<unsigned char> vchName (sName.begin(), sName.end());