From 4b029d8b0f6418692e316a0f1989c30553ca5919 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Thu, 5 Jul 2012 20:20:44 -0700 Subject: [PATCH] Fix defect in previous commit. --- src/SHAMapNodes.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/SHAMapNodes.cpp b/src/SHAMapNodes.cpp index b8edb5e20f..b7868f98a0 100644 --- a/src/SHAMapNodes.cpp +++ b/src/SHAMapNodes.cpp @@ -217,7 +217,7 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector(u, s.peekData()); @@ -244,7 +244,14 @@ SHAMapTreeNode::SHAMapTreeNode(const SHAMapNode& id, const std::vector(s.getPrefixHash(sHP_TransactionNode), s.peekData()); + if (len < (256 / 8)) + throw std::runtime_error("short TM node"); + uint256 u; + s.get256(u, len - (256 / 8)); + s.chop(256 / 8); + if (u.isZero()) + throw std::runtime_error("invalid TM node"); + mItem = boost::make_shared(u, s.peekData()); mType = tnTRANSACTION_MD; } } @@ -412,6 +419,7 @@ void SHAMapTreeNode::addRaw(Serializer& s, int format) else { mItem->addRaw(s); + mItem->add256(mItem->getTag()); s.add8(4); } }