Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1427)

Unified Diff: media/cast/logging/log_serializer.cc

Issue 241833002: Cast: Limit number of events/packets in EncodingEventSubscriber protos. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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))

Powered by Google App Engine
This is Rietveld 408576698