diff options
author | Gregory Sanders <gsanders87@gmail.com> | 2018-09-29 22:09:15 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2018-12-05 17:38:57 -0500 |
commit | 7a590d8390ef2158509c4fc08b84dac71f59e1fb (patch) | |
tree | f476f0184ede38f5a2277797fea93dd6defc9feb | |
parent | 5d12143c730c3dcd11bb9dce16ed43a15a16eea2 (diff) | |
download | bitcoin-7a590d8390ef2158509c4fc08b84dac71f59e1fb.tar.xz |
fix converttopsbt permitsigdata arg, add basic test
Github-Pull: #14356
Rebased-From: 88a79cb436b30b39d37d139da723f5a31e9d161b
-rw-r--r-- | src/rpc/rawtransaction.cpp | 2 | ||||
-rwxr-xr-x | test/functional/rpc_psbt.py | 3 |
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']) |