aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2018-12-06 15:18:16 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2018-12-06 15:18:39 +0100
commit8b8b3a9a5fd9d65d8ed0933352fad808327e0bf3 (patch)
treef96ce79eb55ba17b6ea01e035fd6bd679d3ac064
parent6042dfe008e7ad2c3495d1e9c484c7f2e256f04c (diff)
parent7a590d8390ef2158509c4fc08b84dac71f59e1fb (diff)
downloadbitcoin-8b8b3a9a5fd9d65d8ed0933352fad808327e0bf3.tar.xz
Merge #14878: 0.17: Further backports
7a590d8390ef2158509c4fc08b84dac71f59e1fb fix converttopsbt permitsigdata arg, add basic test (Gregory Sanders) Pull request description: Ooff, we missed some backports that were tagged. Checked: * In 7a590d8 (clean cherry-pick): The test changes fail without the code changes Tree-SHA512: 9996886113dfcd8efa91f5436bc0f3507c81579861543611367bc3403868019fb1e45832c3f994f12278edb1c0c850e21f2f88e46a6981f45a11c4d61dcedaf9
-rw-r--r--src/rpc/rawtransaction.cpp2
-rwxr-xr-xtest/functional/rpc_psbt.py3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp
index 7de3638f4e..0925b1c0cf 100644
--- a/src/rpc/rawtransaction.cpp
+++ b/src/rpc/rawtransaction.cpp
@@ -1778,7 +1778,7 @@ UniValue converttopsbt(const JSONRPCRequest& request)
// Remove all scriptSigs and scriptWitnesses from inputs
for (CTxIn& input : tx.vin) {
- if ((!input.scriptSig.empty() || !input.scriptWitness.IsNull()) && (request.params[1].isNull() || (!request.params[1].isNull() && request.params[1].get_bool()))) {
+ if ((!input.scriptSig.empty() || !input.scriptWitness.IsNull()) && !permitsigdata) {
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "Inputs must not have scriptSigs and scriptWitnesses");
}
input.scriptSig.clear();
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py
index a31719088f..ef895dd13a 100755
--- a/test/functional/rpc_psbt.py
+++ b/test/functional/rpc_psbt.py
@@ -146,6 +146,9 @@ class PSBTTest(BitcoinTestFramework):
# Make sure that a psbt with signatures cannot be converted
signedtx = self.nodes[0].signrawtransactionwithwallet(rawtx['hex'])
assert_raises_rpc_error(-22, "TX decode failed", self.nodes[0].converttopsbt, signedtx['hex'])
+ assert_raises_rpc_error(-22, "TX decode failed", self.nodes[0].converttopsbt, signedtx['hex'], False)
+ # Unless we allow it to convert and strip signatures
+ self.nodes[0].converttopsbt(signedtx['hex'], True)
# Explicilty allow converting non-empty txs
new_psbt = self.nodes[0].converttopsbt(rawtx['hex'])