From 7e8218aedd30a3dacb2642ef37ff1f68657071b2 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 1 Oct 2014 16:24:17 -0700 Subject: encoding/json: don't panic on incorrect map argument Fixes #8305. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/145680044 --- src/encoding/json/decode.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/encoding/json/decode.go') diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index af1c908ad7..67ec37388f 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -445,7 +445,7 @@ func (d *decodeState) array(v reflect.Value) { } // object consumes an object from d.data[d.off-1:], decoding into the value v. -// the first byte of the object ('{') has been read already. +// the first byte ('{') of the object has been read already. func (d *decodeState) object(v reflect.Value) { // Check for unmarshaler. u, ut, pv := d.indirect(v, false) @@ -478,7 +478,9 @@ func (d *decodeState) object(v reflect.Value) { t := v.Type() if t.Key().Kind() != reflect.String { d.saveError(&UnmarshalTypeError{"object", v.Type()}) - break + d.off-- + d.next() // skip over { } in input + return } if v.IsNil() { v.Set(reflect.MakeMap(t)) -- cgit v1.3-5-g9baa