Use correct wireformat type for repeated group fields.

PiperOrigin-RevId: 510456181
pull/11981/head
Protobuf Team Bot 2 years ago committed by Copybara-Service
parent e1e30cebba
commit df455a33fd
  1. 18
      src/google/protobuf/message_unittest.inc
  2. 3
      src/google/protobuf/unittest.proto

@ -465,6 +465,24 @@ TEST(MESSAGE_TEST_NAME, ParseFailsIfGroupFieldMalformed) {
EXPECT_FALSE(parsed.ParseFromString(data));
}
TEST(MESSAGE_TEST_NAME, ParseFailsIfRepeatedGroupFieldMalformed) {
UNITTEST::TestMutualRecursionA original, parsed;
original.mutable_bb()
->mutable_a()
->add_subgroupr()
->mutable_payload()
->set_optional_int64(-1);
std::string data;
ASSERT_TRUE(original.SerializeToString(&data));
// Should parse correctly.
ASSERT_TRUE(parsed.ParseFromString(data));
// Overwriting the last byte of varint (-1) to 0xFF results in malformed wire.
data[data.size() - 2] = 0xFF;
EXPECT_FALSE(parsed.ParseFromString(data));
}
TEST(MESSAGE_TEST_NAME, UninitializedAndMalformed) {
UNITTEST::TestRequiredForeign o, p1, p2;
o.mutable_optional_message()->set_a(-1);

@ -552,6 +552,9 @@ message TestMutualRecursionA {
optional SubMessage sub_message = 3; // Needed because of bug in javatest
optional TestAllTypes not_in_this_scc = 4;
}
repeated group SubGroupR = 5 {
optional TestAllTypes payload = 6;
}
}
message TestMutualRecursionB {

Loading…
Cancel
Save