From b53656d4599d43670390e61c720aae5236f70131 Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Sun, 1 Apr 2018 22:02:44 +0000 Subject: [PATCH] Check that a struct ends with closing brace --- reflect_struct_decoder.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/reflect_struct_decoder.go b/reflect_struct_decoder.go index d30397f..fd76647 100644 --- a/reflect_struct_decoder.go +++ b/reflect_struct_decoder.go @@ -494,13 +494,16 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) if !iter.readObjectStart() { return } - decoder.decodeOneField(ptr, iter) - for iter.nextToken() == ',' { + var c byte + for c = ','; c == ','; c = iter.nextToken() { decoder.decodeOneField(ptr, iter) } if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + if c != '}' { + iter.ReportError("struct Decode", `expect }, but found `+string([]byte{c})) + } } func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *Iterator) {