diff --git a/libethcore/BlockInfo.cpp b/libethcore/BlockInfo.cpp index f04353aac..bbd78224f 100644 --- a/libethcore/BlockInfo.cpp +++ b/libethcore/BlockInfo.cpp @@ -104,6 +104,8 @@ void BlockInfo::populateFromHeader(RLP const& _header, Strictness _s) int field = 0; try { + if (_header.itemCount() != 15) + throw InvalidBlockHeaderItemCount(); parentHash = _header[field = 0].toHash(RLP::VeryStrict); sha3Uncles = _header[field = 1].toHash(RLP::VeryStrict); coinbaseAddress = _header[field = 2].toHash
(RLP::VeryStrict); diff --git a/libethcore/Exceptions.h b/libethcore/Exceptions.h index 0059854f7..f9eab7c8d 100644 --- a/libethcore/Exceptions.h +++ b/libethcore/Exceptions.h @@ -67,6 +67,7 @@ struct InvalidReceiptsStateRoot: virtual dev::Exception {}; struct InvalidTimestamp: virtual dev::Exception {}; struct InvalidLogBloom: virtual dev::Exception {}; class InvalidNonce: virtual public dev::Exception {}; +class InvalidBlockHeaderItemCount: virtual public dev::Exception {}; class InvalidBlockNonce: virtual public dev::Exception {}; struct InvalidParentHash: virtual dev::Exception {}; struct InvalidNumber: virtual dev::Exception {};