diff options
author | rsgowman <rgowman@google.com> | 2018-06-05 19:29:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-05 19:29:14 -0400 |
commit | 2b0f4627383574b09414117985b4d204312b9cc0 (patch) | |
tree | 1321dd517e4ccadd3d587e437a632a8709182db3 | |
parent | 5a2c4ac3446fc3f23a660ffc2be57b576f2504d8 (diff) |
Fix undefined behaviour in test. (#1381)
PB_LAST_FIELD is required by nanopb, but was missed in the test. Without
this, undefined behaviour results. (Either manifesting itself as fine
(i.e. if there's zeros following) or segfaults.)
-rw-r--r-- | Firestore/core/test/firebase/firestore/remote/serializer_test.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Firestore/core/test/firebase/firestore/remote/serializer_test.cc b/Firestore/core/test/firebase/firestore/remote/serializer_test.cc index a902b5d..f3773b9 100644 --- a/Firestore/core/test/firebase/firestore/remote/serializer_test.cc +++ b/Firestore/core/test/firebase/firestore/remote/serializer_test.cc @@ -502,13 +502,14 @@ TEST_F(SerializerTest, EncodesFieldValuesWithRepeatedEntries) { // Copy of the real one (from the nanopb generated document.pb.c), but with // only boolean_value and integer_value. - const pb_field_t google_firestore_v1beta1_Value_fields_Fake[2] = { + const pb_field_t google_firestore_v1beta1_Value_fields_Fake[3] = { PB_FIELD(1, BOOL, SINGULAR, STATIC, FIRST, google_firestore_v1beta1_Value_Fake, boolean_value, boolean_value, 0), PB_FIELD(2, INT64, SINGULAR, STATIC, OTHER, google_firestore_v1beta1_Value_Fake, integer_value, boolean_value, 0), + PB_LAST_FIELD, }; // Craft the bytes. boolean_value has a smaller tag, so it'll get encoded @@ -642,13 +643,14 @@ TEST_F(SerializerTest, BadFieldValueTagWithOtherValidTagsPresent) { // only boolean_value and integer_value. Also modified such that integer_value // now has an invalid tag (instead of 2). const int invalid_tag = 31; - const pb_field_t google_firestore_v1beta1_Value_fields_Fake[2] = { + const pb_field_t google_firestore_v1beta1_Value_fields_Fake[3] = { PB_FIELD(1, BOOL, SINGULAR, STATIC, FIRST, google_firestore_v1beta1_Value_Fake, boolean_value, boolean_value, 0), PB_FIELD(invalid_tag, INT64, SINGULAR, STATIC, OTHER, google_firestore_v1beta1_Value_Fake, integer_value, boolean_value, 0), + PB_LAST_FIELD, }; // Craft the bytes. boolean_value has a smaller tag, so it'll get encoded @@ -824,13 +826,14 @@ TEST_F(SerializerTest, // now has a tag of 31. const int invalid_tag = 31; const pb_field_t - google_firestore_v1beta1_BatchGetDocumentsResponse_fields_Fake[2] = { + google_firestore_v1beta1_BatchGetDocumentsResponse_fields_Fake[3] = { PB_FIELD(2, STRING, SINGULAR, CALLBACK, FIRST, google_firestore_v1beta1_BatchGetDocumentsResponse_Fake, missing, missing, 0), PB_FIELD(invalid_tag, INT64, SINGULAR, STATIC, OTHER, google_firestore_v1beta1_BatchGetDocumentsResponse_Fake, extra_field, missing, 0), + PB_LAST_FIELD, }; const char* missing_value = "projects/p/databases/d/documents/one/two"; |