| Index: media/cast/logging/log_serializer.cc
|
| diff --git a/media/cast/logging/log_serializer.cc b/media/cast/logging/log_serializer.cc
|
| index 3452c903bf94aadfd700f6447ddddd4733fedaa1..3423d94200d65a3be05f15587dfd8aacfa27887a 100644
|
| --- a/media/cast/logging/log_serializer.cc
|
| +++ b/media/cast/logging/log_serializer.cc
|
| @@ -19,6 +19,7 @@
|
| #include "media/cast/logging/log_serializer.h"
|
|
|
| #include "base/big_endian.h"
|
| +#include "base/logging.h"
|
| #include "third_party/zlib/zlib.h"
|
|
|
| namespace media {
|
| @@ -33,6 +34,8 @@ using media::cast::proto::LogMetadata;
|
| // Use 30MB of temp buffer to hold uncompressed data if |compress| is true.
|
| const int kMaxUncompressedBytes = 30 * 1000 * 1000;
|
|
|
| +// The maximum allowed size per serialized proto.
|
| +const int kMaxSerializedProtoBytes = (1 << 16) - 1;
|
| bool DoSerializeEvents(const LogMetadata& metadata,
|
| const FrameEventMap& frame_events,
|
| const PacketEventMap& packet_events,
|
| @@ -42,6 +45,7 @@ bool DoSerializeEvents(const LogMetadata& metadata,
|
| base::BigEndianWriter writer(output, max_output_bytes);
|
|
|
| int proto_size = metadata.ByteSize();
|
| + DCHECK(proto_size <= kMaxSerializedProtoBytes);
|
| if (!writer.WriteU16(proto_size))
|
| return false;
|
| if (!metadata.SerializeToArray(writer.ptr(), writer.remaining()))
|
| @@ -63,6 +67,7 @@ bool DoSerializeEvents(const LogMetadata& metadata,
|
| prev_rtp_timestamp = it->first;
|
|
|
| proto_size = frame_event.ByteSize();
|
| + DCHECK(proto_size <= kMaxSerializedProtoBytes);
|
|
|
| // Write size of the proto, then write the proto.
|
| if (!writer.WriteU16(proto_size))
|
| @@ -84,6 +89,7 @@ bool DoSerializeEvents(const LogMetadata& metadata,
|
| prev_rtp_timestamp = it->first;
|
|
|
| proto_size = packet_event.ByteSize();
|
| + DCHECK(proto_size <= kMaxSerializedProtoBytes);
|
|
|
| // Write size of the proto, then write the proto.
|
| if (!writer.WriteU16(proto_size))
|
|
|