From d8a18ef34f9e721bbf891838335cecfa2e48e214 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 8 Sep 2017 00:02:24 +0200 Subject: [PATCH] fix incorrect bounds check to wit.vtxinwit access in ContextualCheckBlock --- src/validation.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/validation.cpp b/src/validation.cpp index 5a3e98c829..a54a4d9820 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -3888,7 +3888,9 @@ bool ContextualCheckBlock(const CBlock& block, CValidationState& state, const Co int commitpos = GetWitnessCommitmentIndex(block); if (commitpos != -1) { uint256 hashWitness = BlockWitnessMerkleRoot(block); - if ((block.vtx[0]->wit.vtxinwit.size() > 0 &&block.vtx[0]->wit.vtxinwit[0].scriptWitness.stack.size() != 1) || block.vtx[0]->wit.vtxinwit[0].scriptWitness.stack[0].size() != 32) { + if (block.vtx[0]->wit.vtxinwit.empty() + || block.vtx[0]->wit.vtxinwit[0].scriptWitness.stack.size() != 1 + || block.vtx[0]->wit.vtxinwit[0].scriptWitness.stack[0].size() != 32) { return state.DoS(100, false, REJECT_INVALID, "bad-witness-nonce-size", true, strprintf("%s : invalid witness nonce size", __func__)); } CHash256().Write(hashWitness.begin(), 32).Write(&block.vtx[0]->wit.vtxinwit[0].scriptWitness.stack[0][0], 32).Finalize(hashWitness.begin());