This is an automated email from the ASF dual-hosted git repository. jking pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/thrift.git
The following commit(s) were added to refs/heads/master by this push: new 6e29b19 Remove checking of remaining bytes in the Go library. 6e29b19 is described below commit 6e29b192a336bff7d2e22b8c73bc1f1216a41204 Author: Vyacheslav Kulakov <kulakov.h...@gmail.com> AuthorDate: Fri Aug 31 13:42:50 2018 +0300 Remove checking of remaining bytes in the Go library. Obtaining the remaining bytes isn't supported with some combinations of protocols and transports in the Go library. For example, the binary protocol doesn't work properly with the zlib transport which wraps the framed transport. In libraries for other languages checking is used for directly reading data from a buffer of an underlying transport. If data isn't enough we just read data from the underlying transport and never throw an error as in the Go library. But buffer for the zlib tr [...] --- lib/go/thrift/binary_protocol.go | 6 ------ lib/go/thrift/compact_protocol.go | 6 ------ lib/go/thrift/compact_protocol_test.go | 7 +++++++ lib/go/thrift/protocol_test.go | 5 +++-- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/lib/go/thrift/binary_protocol.go b/lib/go/thrift/binary_protocol.go index de0f6a7..1f90bf4 100644 --- a/lib/go/thrift/binary_protocol.go +++ b/lib/go/thrift/binary_protocol.go @@ -448,9 +448,6 @@ func (p *TBinaryProtocol) ReadBinary() ([]byte, error) { if size < 0 { return nil, invalidDataLength } - if uint64(size) > p.trans.RemainingBytes() { - return nil, invalidDataLength - } isize := int(size) buf := make([]byte, isize) @@ -481,9 +478,6 @@ func (p *TBinaryProtocol) readStringBody(size int32) (value string, err error) { if size < 0 { return "", nil } - if uint64(size) > p.trans.RemainingBytes() { - return "", invalidDataLength - } var ( buf bytes.Buffer diff --git a/lib/go/thrift/compact_protocol.go b/lib/go/thrift/compact_protocol.go index 66fbf5c..1900d50 100644 --- a/lib/go/thrift/compact_protocol.go +++ b/lib/go/thrift/compact_protocol.go @@ -562,9 +562,6 @@ func (p *TCompactProtocol) ReadString() (value string, err error) { if length < 0 { return "", invalidDataLength } - if uint64(length) > p.trans.RemainingBytes() { - return "", invalidDataLength - } if length == 0 { return "", nil @@ -591,9 +588,6 @@ func (p *TCompactProtocol) ReadBinary() (value []byte, err error) { if length < 0 { return nil, invalidDataLength } - if uint64(length) > p.trans.RemainingBytes() { - return nil, invalidDataLength - } buf := make([]byte, length) _, e = io.ReadFull(p.trans, buf) diff --git a/lib/go/thrift/compact_protocol_test.go b/lib/go/thrift/compact_protocol_test.go index f940b4e..65f77f2 100644 --- a/lib/go/thrift/compact_protocol_test.go +++ b/lib/go/thrift/compact_protocol_test.go @@ -26,11 +26,18 @@ import ( func TestReadWriteCompactProtocol(t *testing.T) { ReadWriteProtocolTest(t, NewTCompactProtocolFactory()) + transports := []TTransport{ NewTMemoryBuffer(), NewStreamTransportRW(bytes.NewBuffer(make([]byte, 0, 16384))), NewTFramedTransport(NewTMemoryBuffer()), } + + zlib0, _ := NewTZlibTransport(NewTMemoryBuffer(), 0) + zlib6, _ := NewTZlibTransport(NewTMemoryBuffer(), 6) + zlib9, _ := NewTZlibTransport(NewTFramedTransport(NewTMemoryBuffer()), 9) + transports = append(transports, zlib0, zlib6, zlib9) + for _, trans := range transports { p := NewTCompactProtocol(trans) ReadWriteBool(t, p, trans) diff --git a/lib/go/thrift/protocol_test.go b/lib/go/thrift/protocol_test.go index e9118da..944055c 100644 --- a/lib/go/thrift/protocol_test.go +++ b/lib/go/thrift/protocol_test.go @@ -32,7 +32,6 @@ import ( const PROTOCOL_BINARY_DATA_SIZE = 155 var ( - data string // test data for writing protocol_bdata []byte // test data for writing; same as data BOOL_VALUES []bool BYTE_VALUES []int8 @@ -48,7 +47,6 @@ func init() { for i := 0; i < PROTOCOL_BINARY_DATA_SIZE; i++ { protocol_bdata[i] = byte((i + 'a') % 255) } - data = string(protocol_bdata) BOOL_VALUES = []bool{false, true, false, false, true} BYTE_VALUES = []int8{117, 0, 1, 32, 127, -128, -1} INT16_VALUES = []int16{459, 0, 1, -1, -128, 127, 32767, -32768} @@ -121,6 +119,9 @@ func ReadWriteProtocolTest(t *testing.T, protocolFactory TProtocolFactory) { NewTMemoryBufferTransportFactory(1024), NewStreamTransportFactory(buf, buf, true), NewTFramedTransportFactory(NewTMemoryBufferTransportFactory(1024)), + NewTZlibTransportFactoryWithFactory(0, NewTMemoryBufferTransportFactory(1024)), + NewTZlibTransportFactoryWithFactory(6, NewTMemoryBufferTransportFactory(1024)), + NewTZlibTransportFactoryWithFactory(9, NewTFramedTransportFactory(NewTMemoryBufferTransportFactory(1024))), NewTHttpPostClientTransportFactory("http://" + addr.String()), } for _, tf := range transports {