aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2021-03-23 20:08:00 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-03-23 20:08:00 +0000
commit139b7106411f15b8101ab7a3f66529ffca78c597 (patch)
treea3a2210882595e0523680aaa525ba303430cec48
parent018e8809159cb3aa999f03a3b2418b65f0fbd458 (diff)
parentb866b6d10ac195e863e30c5bccfe3b4426435ca4 (diff)
downloadprotobuf-temp_ab_7272582.tar.gz
Backport null pointer check from upstream am: b866b6d10atemp_ab_7272582
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/protobuf/+/13544642 Change-Id: I0da0ae91590a12ca16156b439ab737d55189a593
-rw-r--r--src/google/protobuf/util/internal/protostream_objectsource.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/google/protobuf/util/internal/protostream_objectsource.cc b/src/google/protobuf/util/internal/protostream_objectsource.cc
index 252184df0..f632064cc 100644
--- a/src/google/protobuf/util/internal/protostream_objectsource.cc
+++ b/src/google/protobuf/util/internal/protostream_objectsource.cc
@@ -539,6 +539,11 @@ Status ProtoStreamObjectSource::RenderStruct(const ProtoStreamObjectSource* os,
ow->StartObject(field_name);
while (tag != 0) {
field = os->FindAndVerifyField(type, tag);
+ if (field == nullptr) {
+ WireFormat::SkipField(os->stream_, tag, nullptr);
+ tag = os->stream_->ReadTag();
+ continue;
+ }
// google.protobuf.Struct has only one field that is a map. Hence we use
// RenderMap to render that field.
if (os->IsMap(*field)) {