From 0241e18f4229976b4bd8ffb609c09c4465a63108 Mon Sep 17 00:00:00 2001 From: Jonathan Moody <103143855+moodyjon@users.noreply.github.com> Date: Tue, 24 May 2022 09:00:09 -0400 Subject: [PATCH] Harden Marshal/Unmarshal logic for Change.SpentChildren. --- claimtrie/change/change.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/claimtrie/change/change.go b/claimtrie/change/change.go index aac349c6..95a0e3d5 100644 --- a/claimtrie/change/change.go +++ b/claimtrie/change/change.go @@ -78,9 +78,10 @@ func (c *Change) Marshal(enc *bytes.Buffer) error { binary.BigEndian.PutUint32(temp[:4], uint32(len(c.SpentChildren))) enc.Write(temp[:4]) for key := range c.SpentChildren { - binary.BigEndian.PutUint16(temp[:2], uint16(len(key))) // technically limited to 255; not sure we trust it + keySize := uint16(len(key)) + binary.BigEndian.PutUint16(temp[:2], keySize) // technically limited to 255; not sure we trust it enc.Write(temp[:2]) - enc.WriteString(key) + enc.WriteString(key[:keySize]) } } else { binary.BigEndian.PutUint32(temp[:4], 0)