You've already forked json-iterator
mirror of
https://github.com/json-iterator/go.git
synced 2025-07-06 23:37:39 +02:00
fix #206, do not allow nil pointer as unmarshal input
This commit is contained in:
@ -233,6 +233,10 @@ func (iter *Iterator) ReadVal(obj interface{}) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
e := (*emptyInterface)(unsafe.Pointer(&obj))
|
e := (*emptyInterface)(unsafe.Pointer(&obj))
|
||||||
|
if e.word == nil {
|
||||||
|
iter.ReportError("ReadVal", "can not read into nil pointer")
|
||||||
|
return
|
||||||
|
}
|
||||||
decoder.Decode(e.word, iter)
|
decoder.Decode(e.word, iter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,3 +136,14 @@ func Test_valid(t *testing.T) {
|
|||||||
should.True(Valid([]byte(`{}`)))
|
should.True(Valid([]byte(`{}`)))
|
||||||
should.False(Valid([]byte(`{`)))
|
should.False(Valid([]byte(`{`)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_nil_pointer(t *testing.T) {
|
||||||
|
should := require.New(t)
|
||||||
|
data := []byte(`{"A":0}`)
|
||||||
|
type T struct {
|
||||||
|
X int
|
||||||
|
}
|
||||||
|
var obj *T
|
||||||
|
err := Unmarshal(data, obj)
|
||||||
|
should.NotNil(err)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user