diff options
author | Jim Posen <jim.posen@gmail.com> | 2018-08-26 11:25:36 -0700 |
---|---|---|
committer | Jim Posen <jim.posen@gmail.com> | 2018-08-28 12:12:32 -0700 |
commit | f05599557a8305d16bd5965921583af9d012fc27 (patch) | |
tree | c321cfe6df4cb8dde1c35938c3a11429f7ad09c7 /src/blockfilter.cpp | |
parent | 427253cf7e19ed9ef86b45457de41e345676c88e (diff) | |
download | bitcoin-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.cpp | 3 |
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()); } } |