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 /Firestore/core/test | |
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.)
Diffstat (limited to 'Firestore/core/test')
-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"; |