From 73f85c828629cd9ae6792eac0d4e4b3ec0ce6314 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 18 Mar 2015 22:10:15 +0100 Subject: [PATCH] Additional check in header for too many items. --- libethcore/BlockInfo.cpp | 2 ++ libethcore/Exceptions.h | 1 + 2 files changed, 3 insertions(+) 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 {};