diff options
Diffstat (limited to 'lib/go/thrift/json_protocol.go')
-rw-r--r-- | lib/go/thrift/json_protocol.go | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/lib/go/thrift/json_protocol.go b/lib/go/thrift/json_protocol.go index 8e59d16cf..98764fa88 100644 --- a/lib/go/thrift/json_protocol.go +++ b/lib/go/thrift/json_protocol.go @@ -311,9 +311,13 @@ func (p *TJSONProtocol) ReadMapBegin(ctx context.Context) (keyType TType, valueT } // read size - iSize, e := p.ReadI64(ctx) - if e != nil { - return keyType, valueType, size, e + iSize, err := p.ReadI64(ctx) + if err != nil { + return keyType, valueType, size, err + } + err = checkSizeForProtocol(int32(iSize), p.cfg) + if err != nil { + return keyType, valueType, 0, err } size = int(iSize) @@ -485,9 +489,16 @@ func (p *TJSONProtocol) ParseElemListBegin() (elemType TType, size int, e error) if err != nil { return elemType, size, err } - nSize, _, err2 := p.ParseI64() + nSize, _, err := p.ParseI64() + if err != nil { + return elemType, 0, err + } + err = checkSizeForProtocol(int32(nSize), p.cfg) + if err != nil { + return elemType, 0, err + } size = int(nSize) - return elemType, size, err2 + return elemType, size, nil } func (p *TJSONProtocol) readElemListBegin() (elemType TType, size int, e error) { |