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 {

Reply via email to