aboutsummaryrefslogtreecommitdiff
path: root/src/blockfilter.cpp
diff options
context:
space:
mode:
authorJim Posen <jim.posen@gmail.com>2018-08-26 11:25:36 -0700
committerJim Posen <jim.posen@gmail.com>2018-08-28 12:12:32 -0700
commitf05599557a8305d16bd5965921583af9d012fc27 (patch)
treec321cfe6df4cb8dde1c35938c3a11429f7ad09c7 /src/blockfilter.cpp
parent427253cf7e19ed9ef86b45457de41e345676c88e (diff)
downloadbitcoin-f05599557a8305d16bd5965921583af9d012fc27.tar.xz
blockfilter: Omit empty scripts from filter contents.
Code change also avoids out-of-bounds script access bug.
Diffstat (limited to 'src/blockfilter.cpp')
-rw-r--r--src/blockfilter.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/blockfilter.cpp b/src/blockfilter.cpp
index 38fcfacf7f..91623fe70a 100644
--- a/src/blockfilter.cpp
+++ b/src/blockfilter.cpp
@@ -208,7 +208,7 @@ static GCSFilter::ElementSet BasicFilterElements(const CBlock& block,
for (const CTransactionRef& tx : block.vtx) {
for (const CTxOut& txout : tx->vout) {
const CScript& script = txout.scriptPubKey;
- if (script[0] == OP_RETURN) continue;
+ if (script.empty() || script[0] == OP_RETURN) continue;
elements.emplace(script.begin(), script.end());
}
}
@@ -216,6 +216,7 @@ static GCSFilter::ElementSet BasicFilterElements(const CBlock& block,
for (const CTxUndo& tx_undo : block_undo.vtxundo) {
for (const Coin& prevout : tx_undo.vprevout) {
const CScript& script = prevout.out.scriptPubKey;
+ if (script.empty()) continue;
elements.emplace(script.begin(), script.end());
}
}