From 6a5efd6a7484f053f7749cf16780e16f23ea99cb Mon Sep 17 00:00:00 2001 From: Sergio Mena Date: Wed, 12 Oct 2022 12:09:11 +0200 Subject: [PATCH] Fix unmarshall --- test/loadtime/payload/payload.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/test/loadtime/payload/payload.go b/test/loadtime/payload/payload.go index 5fd9c186e..99316ca6b 100644 --- a/test/loadtime/payload/payload.go +++ b/test/loadtime/payload/payload.go @@ -51,12 +51,22 @@ func NewBytes(p *Payload) ([]byte, error) { // FromBytes leaves the padding untouched, returning it to the caller to handle // or discard per their preference. func FromBytes(b []byte) (*Payload, error) { - p := &Payload{} - tr := bytes.TrimPrefix(b, []byte(keyPrefix)) - if bytes.Equal(b, tr) { + tr_h := bytes.TrimPrefix(b, []byte(keyPrefix)) + if bytes.Equal(b, tr_h) { return nil, errors.New("payload bytes missing key prefix") } - err := proto.Unmarshal(tr, p) + + var tr_b string + n, err := fmt.Sscanf("%X", string(tr_h), tr_b) + if err != nil { + return nil, err + } + if n != 1 { + return nil, fmt.Errorf("Invalid # of elements in TX payload (1 != %d)", n) + } + + p := &Payload{} + err = proto.Unmarshal(tr_h, p) if err != nil { return nil, err }