Vector of structs were not being verified correctly.
authorWouter van Oortmerssen <wvo@google.com>
Mon, 19 Oct 2015 21:06:46 +0000 (14:06 -0700)
committerWouter van Oortmerssen <wvo@google.com>
Mon, 19 Oct 2015 21:11:13 +0000 (14:11 -0700)
Because they are represented as `const T *` in the Vector template,
the sizeof(const T *) was accidentally used instead of sizeof(T).

Change-Id: Ib4dc73e1d21396ba2e30c84e5e229c4147204bb1
Tested: on Linux.

include/flatbuffers/flatbuffers.h

index 4c40da0..8f6933b 100644 (file)
@@ -919,6 +919,11 @@ class Verifier FLATBUFFERS_FINAL_CLASS {
                         &end);
   }
 
+  // Verify a pointer (may be NULL) of a vector to struct.
+  template<typename T> bool Verify(const Vector<const T *> *vec) const {
+    return Verify(reinterpret_cast<const Vector<T> *>(vec));
+  }
+
   // Verify a pointer (may be NULL) to string.
   bool Verify(const String *str) const {
     const uint8_t *end;