diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-10-07 08:38:40 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-10-07 08:51:20 +0200 |
commit | 953f16cb4e17aef8223d74a578d1fd064b2a34b6 (patch) | |
tree | 6043f970485404fdd5de69489a46eafba9423ce9 | |
parent | a2a5fe3b727bcf5f87b91f5b625c98e132fd3d22 (diff) | |
parent | 9d7cd4c598edfff12f1f80629c9149b3f1cf75a6 (diff) |
Merge pull request #4954
9d7cd4c Don't return an address for invalid pubkeys (Andy Alness)
-rw-r--r-- | src/script/standard.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/script/standard.cpp b/src/script/standard.cpp index 407baf621d..53ae254d59 100644 --- a/src/script/standard.cpp +++ b/src/script/standard.cpp @@ -203,7 +203,11 @@ bool ExtractDestination(const CScript& scriptPubKey, CTxDestination& addressRet) if (whichType == TX_PUBKEY) { - addressRet = CPubKey(vSolutions[0]).GetID(); + CPubKey pubKey(vSolutions[0]); + if (!pubKey.IsValid()) + return false; + + addressRet = pubKey.GetID(); return true; } else if (whichType == TX_PUBKEYHASH) @@ -237,9 +241,16 @@ bool ExtractDestinations(const CScript& scriptPubKey, txnouttype& typeRet, vecto nRequiredRet = vSolutions.front()[0]; for (unsigned int i = 1; i < vSolutions.size()-1; i++) { - CTxDestination address = CPubKey(vSolutions[i]).GetID(); + CPubKey pubKey(vSolutions[i]); + if (!pubKey.IsValid()) + continue; + + CTxDestination address = pubKey.GetID(); addressRet.push_back(address); } + + if (addressRet.empty()) + return false; } else { |