aboutsummaryrefslogtreecommitdiff
path: root/src/psbt.cpp
diff options
context:
space:
mode:
authorGlenn Willen <gwillen@nerdnet.org>2019-01-29 22:51:56 -0800
committerGlenn Willen <gwillen@nerdnet.org>2019-02-11 14:08:04 -0800
commit78b9893d020e8b1351565f1adbf591cb32f6dc90 (patch)
tree599c5a1b8627fb1681b038d3b89aef07f3ea8663 /src/psbt.cpp
parentbd0dbe8763fc3029cf96531c9ccaba280b939445 (diff)
Remove op== on PSBTs; check compatibility in Merge
Remove the op== on PartiallySignedTransaction, which only checks that the CTransactions are equal. Instead, check this directly in Merge, and return false if the CTransactions are not equal (so the PSBTs cannot be merged.)
Diffstat (limited to 'src/psbt.cpp')
-rw-r--r--src/psbt.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/psbt.cpp b/src/psbt.cpp
index 97fb39f1c8..06032d6953 100644
--- a/src/psbt.cpp
+++ b/src/psbt.cpp
@@ -16,8 +16,13 @@ bool PartiallySignedTransaction::IsNull() const
return !tx && inputs.empty() && outputs.empty() && unknown.empty();
}
-void PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
+bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
{
+ // Prohibited to merge two PSBTs over different transactions
+ if (tx->GetHash() != psbt.tx->GetHash()) {
+ return false;
+ }
+
for (unsigned int i = 0; i < inputs.size(); ++i) {
inputs[i].Merge(psbt.inputs[i]);
}
@@ -25,6 +30,8 @@ void PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt)
outputs[i].Merge(psbt.outputs[i]);
}
unknown.insert(psbt.unknown.begin(), psbt.unknown.end());
+
+ return true;
}
bool PartiallySignedTransaction::IsSane() const