THRIFT-4049, THRIFT-4053: when skipping, if field type is invalid, throw a
protocol exception of invalid data instead of doing nothing which could
cause a loop
Client: C++, java

This closes #1371
diff --git a/lib/cpp/src/thrift/protocol/TProtocol.h b/lib/cpp/src/thrift/protocol/TProtocol.h
index 2a9d07b..aa5beea 100644
--- a/lib/cpp/src/thrift/protocol/TProtocol.h
+++ b/lib/cpp/src/thrift/protocol/TProtocol.h
@@ -753,6 +753,8 @@
   case T_UTF8:
   case T_UTF16:
     break;
+  default:
+    throw TProtocolException(TProtocolException::INVALID_DATA);
   }
   return 0;
 }
diff --git a/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java b/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java
index b76f8ea..cdaa30b 100644
--- a/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java
+++ b/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java
@@ -141,7 +141,8 @@
         break;
 
       default:
-        break;
+        throw new TProtocolException(TProtocolException.INVALID_DATA,
+                                   "Unrecognized type " + type);
     }
   }