aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/core/test
diff options
context:
space:
mode:
authorGravatar rsgowman <rgowman@google.com>2018-06-05 19:29:14 -0400
committerGravatar GitHub <noreply@github.com>2018-06-05 19:29:14 -0400
commit2b0f4627383574b09414117985b4d204312b9cc0 (patch)
tree1321dd517e4ccadd3d587e437a632a8709182db3 /Firestore/core/test
parent5a2c4ac3446fc3f23a660ffc2be57b576f2504d8 (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.cc9
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";