Repository: thrift
Updated Branches:
  refs/heads/master 4f710aa4f -> 5f723cd53


THRIFT-4024 Skip() should throw on unknown data types
Client: C#, NETCore, Haxe, Delphi, Go
Patch: Jens Geyer

This closes #1155


Project: http://git-wip-us.apache.org/repos/asf/thrift/repo
Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/5f723cd5
Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/5f723cd5
Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/5f723cd5

Branch: refs/heads/master
Commit: 5f723cd53980f395a92c438790a127cbd5699d90
Parents: 4f710aa
Author: Jens Geyer <[email protected]>
Authored: Tue Jan 10 21:57:48 2017 +0100
Committer: Jens Geyer <[email protected]>
Committed: Wed Jan 11 20:50:38 2017 +0100

----------------------------------------------------------------------
 lib/csharp/src/Protocol/TProtocolUtil.cs                 | 2 ++
 lib/delphi/src/Thrift.Protocol.pas                       | 2 +-
 lib/go/thrift/protocol.go                                | 3 +++
 lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx | 2 +-
 lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs  | 2 ++
 5 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/thrift/blob/5f723cd5/lib/csharp/src/Protocol/TProtocolUtil.cs
----------------------------------------------------------------------
diff --git a/lib/csharp/src/Protocol/TProtocolUtil.cs 
b/lib/csharp/src/Protocol/TProtocolUtil.cs
index 0932a7f..0606c71 100644
--- a/lib/csharp/src/Protocol/TProtocolUtil.cs
+++ b/lib/csharp/src/Protocol/TProtocolUtil.cs
@@ -95,6 +95,8 @@ namespace Thrift.Protocol
                         }
                         prot.ReadListEnd();
                         break;
+                    default:
+                        throw new 
TProtocolException(TProtocolException.INVALID_DATA, "Unknown data type " + 
type.ToString("d"));
                 }
 
             }

http://git-wip-us.apache.org/repos/asf/thrift/blob/5f723cd5/lib/delphi/src/Thrift.Protocol.pas
----------------------------------------------------------------------
diff --git a/lib/delphi/src/Thrift.Protocol.pas 
b/lib/delphi/src/Thrift.Protocol.pas
index 7ff2eae..9ea28de 100644
--- a/lib/delphi/src/Thrift.Protocol.pas
+++ b/lib/delphi/src/Thrift.Protocol.pas
@@ -823,7 +823,7 @@ begin
     end;
 
   else
-    ASSERT( FALSE); // any new types?
+    raise TProtocolExceptionInvalidData.Create('Unexpected type 
'+IntToStr(Ord(type_)));
   end;
 end;
 

http://git-wip-us.apache.org/repos/asf/thrift/blob/5f723cd5/lib/go/thrift/protocol.go
----------------------------------------------------------------------
diff --git a/lib/go/thrift/protocol.go b/lib/go/thrift/protocol.go
index 45fa202..32bb7b3 100644
--- a/lib/go/thrift/protocol.go
+++ b/lib/go/thrift/protocol.go
@@ -21,6 +21,7 @@ package thrift
 
 import (
        "errors"
+       "fmt"
 )
 
 const (
@@ -170,6 +171,8 @@ func Skip(self TProtocol, fieldType TType, maxDepth int) 
(err error) {
                        }
                }
                return self.ReadListEnd()
+       default:
+               return NewTProtocolExceptionWithType(INVALID_DATA, 
errors.New(fmt.Sprintf("Unknown data type %d", fieldType)))
        }
        return nil
 }

http://git-wip-us.apache.org/repos/asf/thrift/blob/5f723cd5/lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx
----------------------------------------------------------------------
diff --git a/lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx 
b/lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx
index 1ec59d2..001e405 100644
--- a/lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx
+++ b/lib/haxe/src/org/apache/thrift/protocol/TProtocolUtil.hx
@@ -95,7 +95,7 @@ class TProtocolUtil {
                     prot.readListEnd();
 
                 default:
-                    trace("Unknown field type ",type," in skipMaxDepth()");
+                                       throw new 
TProtocolException(TProtocolException.UNKNOWN, "Unknown field type ${type}");
             }
 
             prot.DecrementRecursionDepth();

http://git-wip-us.apache.org/repos/asf/thrift/blob/5f723cd5/lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs
----------------------------------------------------------------------
diff --git a/lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs 
b/lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs
index 6232149..038edb9 100644
--- a/lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs
+++ b/lib/netcore/Thrift/Protocols/Utilities/TProtocolUtil.cs
@@ -97,6 +97,8 @@ namespace Thrift.Protocols
                         }
                         await prot.ReadListEndAsync(cancellationToken);
                         break;
+                    default:
+                        throw new 
TProtocolException(TProtocolException.INVALID_DATA, "Unknown data type " + 
type.ToString("d"));
                 }
             }
             finally

Reply via email to