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
diff --git a/talk/examples/peerconnection/server/peer_channel.cc b/talk/examples/peerconnection/server/peer_channel.cc
index 2603465..15e7acb 100644
--- a/talk/examples/peerconnection/server/peer_channel.cc
+++ b/talk/examples/peerconnection/server/peer_channel.cc
@@ -59,6 +59,8 @@
   kMessage,
 };
 
+const size_t kMaxNameLength = 512;
+
 //
 // ChannelMember
 //
@@ -72,8 +74,11 @@
   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 @@
   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 @@
   }
 }
 
-
 //
 // PeerChannel
 //