From 2adc51c86e075c3a1f396fdcfad68f974f5adf57 Mon Sep 17 00:00:00 2001 From: "tommi@webrtc.org" Date: Tue, 15 Jul 2014 08:56:07 +0000 Subject: [PATCH] Handle the case if an unusually long peer name is provided in the peerconnection example. R=xians@webrtc.org Review URL: https://webrtc-codereview.appspot.com/21899004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6687 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/examples/peerconnection/server/peer_channel.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/talk/examples/peerconnection/server/peer_channel.cc b/talk/examples/peerconnection/server/peer_channel.cc index 260346599e..15e7acb714 100644 --- a/talk/examples/peerconnection/server/peer_channel.cc +++ b/talk/examples/peerconnection/server/peer_channel.cc @@ -59,6 +59,8 @@ enum RequestPathIndex { kMessage, }; +const size_t kMaxNameLength = 512; + // // ChannelMember // @@ -72,8 +74,11 @@ ChannelMember::ChannelMember(DataSocket* socket) assert(socket->method() == DataSocket::GET); assert(socket->PathEquals("/sign_in")); name_ = socket->request_arguments(); // TODO: urldecode - if (!name_.length()) + if (name_.empty()) name_ = "peer_" + int2str(id_); + else if (name_.length() > kMaxNameLength) + name_.resize(kMaxNameLength); + std::replace(name_.begin(), name_.end(), ',', '_'); } @@ -100,8 +105,9 @@ bool ChannelMember::NotifyOfOtherMember(const ChannelMember& other) { return true; } -// Returns a string in the form "name,id\n". +// Returns a string in the form "name,id,connected\n". std::string ChannelMember::GetEntry() const { + assert(name_.length() <= kMaxNameLength); char entry[1024] = {0}; sprintf(entry, "%s,%i,%i\n", name_.c_str(), id_, connected_); // NOLINT return entry; @@ -169,7 +175,6 @@ void ChannelMember::SetWaitingSocket(DataSocket* ds) { } } - // // PeerChannel //