mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-14 17:17:58 +00:00
Error on missing amount in signrawtransaction*
Signatures using segregated witness commit to the amount being spent, so that value must be passed into signrawtransactionwithkey and signrawtransactionwithwallet. This ensures an error is issued if that doesn't happen, rather than just assuming the value is 0 and producing a signature that is almost certainly invalid. Github-Pull: #13547 Rebased-From: a3b065b51fb333d976108a1fe34b7f663fd67285
This commit is contained in:
parent
9d9c4185fa
commit
1825e37075
@ -820,7 +820,7 @@ UniValue signrawtransaction(const JSONRPCRequest& request)
|
|||||||
}
|
}
|
||||||
Coin newcoin;
|
Coin newcoin;
|
||||||
newcoin.out.scriptPubKey = scriptPubKey;
|
newcoin.out.scriptPubKey = scriptPubKey;
|
||||||
newcoin.out.nValue = 0;
|
newcoin.out.nValue = MAX_MONEY;
|
||||||
if (prevOut.exists("amount")) {
|
if (prevOut.exists("amount")) {
|
||||||
newcoin.out.nValue = AmountFromValue(find_value(prevOut, "amount"));
|
newcoin.out.nValue = AmountFromValue(find_value(prevOut, "amount"));
|
||||||
}
|
}
|
||||||
@ -898,6 +898,11 @@ UniValue signrawtransaction(const JSONRPCRequest& request)
|
|||||||
|
|
||||||
UpdateTransaction(mtx, i, sigdata);
|
UpdateTransaction(mtx, i, sigdata);
|
||||||
|
|
||||||
|
// amount must be specified for valid segwit signature
|
||||||
|
if (amount == MAX_MONEY && !txin.scriptWitness.IsNull()) {
|
||||||
|
throw JSONRPCError(RPC_TYPE_ERROR, strprintf("Missing amount for %s", coin.out.ToString()));
|
||||||
|
}
|
||||||
|
|
||||||
ScriptError serror = SCRIPT_ERR_OK;
|
ScriptError serror = SCRIPT_ERR_OK;
|
||||||
if (!VerifyScript(txin.scriptSig, prevPubKey, &txin.scriptWitness, STANDARD_SCRIPT_VERIFY_FLAGS, TransactionSignatureChecker(&txConst, i, amount), &serror)) {
|
if (!VerifyScript(txin.scriptSig, prevPubKey, &txin.scriptWitness, STANDARD_SCRIPT_VERIFY_FLAGS, TransactionSignatureChecker(&txConst, i, amount), &serror)) {
|
||||||
if (serror == SCRIPT_ERR_INVALID_STACK_OPERATION) {
|
if (serror == SCRIPT_ERR_INVALID_STACK_OPERATION) {
|
||||||
|
Loading…
Reference in New Issue
Block a user