aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/util/internal/protostream_objectwriter.cc
diff options
context:
space:
mode:
authorGravatar Harvey Tuch <htuch@google.com>2018-06-21 13:05:27 -0400
committerGravatar Harvey Tuch <htuch@google.com>2018-06-21 15:24:50 -0400
commit2d31d0c70680399d45bffdb7de620e945b2cb6bc (patch)
tree82c2ba222d8260e545b707e36d3f7984cda5e837 /src/google/protobuf/util/internal/protostream_objectwriter.cc
parent761a6275d4b7089db50dda22eb4241ba7f923769 (diff)
protostream_objectwriter: fix bug when Any is directly embedded in a map.
This came up when trying to round-trip the JSON<->proto3 conversion for Envoy's envoy.admin.v2alpha.ConfigDump (https://github.com/envoyproxy/envoy/blob/b903c1dc984593f8e95e0569c1503dc5d85fbe34/api/envoy/admin/v2alpha/config_dump.proto#L29). Validated fix on the Envoy code base and via the provided unit test. Signed-off-by: Harvey Tuch <htuch@google.com>
Diffstat (limited to 'src/google/protobuf/util/internal/protostream_objectwriter.cc')
-rw-r--r--src/google/protobuf/util/internal/protostream_objectwriter.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/google/protobuf/util/internal/protostream_objectwriter.cc b/src/google/protobuf/util/internal/protostream_objectwriter.cc
index 2edfd075..a1a7030a 100644
--- a/src/google/protobuf/util/internal/protostream_objectwriter.cc
+++ b/src/google/protobuf/util/internal/protostream_objectwriter.cc
@@ -534,7 +534,7 @@ ProtoStreamObjectWriter* ProtoStreamObjectWriter::StartObject(
Push("", Item::MESSAGE, false, false);
ProtoWriter::RenderDataPiece("key",
DataPiece(name, use_strict_base64_decoding()));
- Push("value", Item::MESSAGE, true, false);
+ Push("value", IsAny(*Lookup("value")) ? Item::ANY : Item::MESSAGE, true, false);
// Make sure we are valid so far after starting map fields.
if (invalid_depth() > 0) return this;