This is an automated email from the ASF dual-hosted git repository.

jensg 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 264a3f3  additional test for TSimpleJSONProtocol
264a3f3 is described below

commit 264a3f318ed3e9e51573f67f963c8509786bcec2
Author: Jens Geyer <[email protected]>
AuthorDate: Sat Feb 23 13:11:40 2019 +0100

    additional test for TSimpleJSONProtocol
---
 lib/go/thrift/json_protocol.go             |  5 +----
 lib/go/thrift/simple_json_protocol.go      |  4 ++--
 lib/go/thrift/simple_json_protocol_test.go | 22 ++++++++++++++++++++++
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/lib/go/thrift/json_protocol.go b/lib/go/thrift/json_protocol.go
index 7be685d..800ac22 100644
--- a/lib/go/thrift/json_protocol.go
+++ b/lib/go/thrift/json_protocol.go
@@ -32,10 +32,7 @@ const (
 // for references to _ParseContext see tsimplejson_protocol.go
 
 // JSON protocol implementation for thrift.
-//
-// This protocol produces/consumes a simple output format
-// suitable for parsing by scripting languages.  It should not be
-// confused with the full-featured TJSONProtocol.
+// Utilizes Simple JSON protocol
 //
 type TJSONProtocol struct {
        *TSimpleJSONProtocol
diff --git a/lib/go/thrift/simple_json_protocol.go 
b/lib/go/thrift/simple_json_protocol.go
index 2e8a711..f5e0c05 100644
--- a/lib/go/thrift/simple_json_protocol.go
+++ b/lib/go/thrift/simple_json_protocol.go
@@ -60,7 +60,7 @@ func (p _ParseContext) String() string {
        return "UNKNOWN-PARSE-CONTEXT"
 }
 
-// JSON protocol implementation for thrift.
+// Simple JSON protocol implementation for thrift.
 //
 // This protocol produces/consumes a simple output format
 // suitable for parsing by scripting languages.  It should not be
@@ -1316,7 +1316,7 @@ func (p *TSimpleJSONProtocol) readNumeric() (Numeric, 
error) {
 func (p *TSimpleJSONProtocol) safePeekContains(b []byte) bool {
        for i := 0; i < len(b); i++ {
                a, _ := p.reader.Peek(i + 1)
-               if len(a) == 0 || a[i] != b[i] {
+               if len(a) < (i+1) || a[i] != b[i] {
                        return false
                }
        }
diff --git a/lib/go/thrift/simple_json_protocol_test.go 
b/lib/go/thrift/simple_json_protocol_test.go
index 7b98082..0126da0 100644
--- a/lib/go/thrift/simple_json_protocol_test.go
+++ b/lib/go/thrift/simple_json_protocol_test.go
@@ -714,3 +714,25 @@ func TestWriteSimpleJSONProtocolMap(t *testing.T) {
        }
        trans.Close()
 }
+
+func TestWriteSimpleJSONProtocolSafePeek(t *testing.T) {
+       trans := NewTMemoryBuffer()
+       p := NewTSimpleJSONProtocol(trans)
+       trans.Write([]byte{'a', 'b'})
+       trans.Flush(context.Background())
+       
+       test1 := p.safePeekContains([]byte{'a', 'b'})
+       if !test1 {
+               t.Fatalf("Should match at test 1")
+       }
+       
+       test2 := p.safePeekContains([]byte{'a', 'b', 'c', 'd'})
+       if test2 {
+               t.Fatalf("Should not match at test 2")
+       }
+       
+       test3 := p.safePeekContains([]byte{'x', 'y'})
+       if test3 {
+               t.Fatalf("Should not match at test 3")
+       }
+}

Reply via email to