Index: common/Player.cpp
===================================================================
--- common/Player.cpp	(revision 4c202e03e18521e3e047e3fe3bb4fff4072824a6)
+++ common/Player.cpp	(revision 3b8adee6ca0d66d59fd2b8970def1fb79f71ae5c)
@@ -2,4 +2,6 @@
 
 #include <iostream>
+#include <sstream>
+#include <cstring>
 
 using namespace std;
@@ -30,14 +32,22 @@
 }
 
+void Player::serialize(char* buffer)
+{
+   ostringstream oss;
+
+   oss << this->name;
+
+   memcpy(buffer, oss.str().c_str(), this->name.length()+1);
+}
+
+void Player::deserialize(char* buffer)
+{
+   istringstream iss;
+
+   iss >> this->name;
+}
+
 void Player::setAddr(sockaddr_in addr)
 {
    this->addr = addr;
 }
-
-void Player::clearSensitiveInfo()
-{
-   this->password = "";
-   this->addr.sin_family = 0;
-   this->addr.sin_port = 0;
-   this->addr.sin_addr.s_addr = 0;
-}
Index: common/Player.h
===================================================================
--- common/Player.h	(revision 4c202e03e18521e3e047e3fe3bb4fff4072824a6)
+++ common/Player.h	(revision 3b8adee6ca0d66d59fd2b8970def1fb79f71ae5c)
@@ -23,6 +23,8 @@
    ~Player();
 
+   void serialize(char* buffer);
+   void deserialize(char* buffer);
+
    void setAddr(sockaddr_in addr);
-   void clearSensitiveInfo();
 
    string name;
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision 4c202e03e18521e3e047e3fe3bb4fff4072824a6)
+++ server/server.cpp	(revision 3b8adee6ca0d66d59fd2b8970def1fb79f71ae5c)
@@ -74,5 +74,5 @@
    for (it = vec.begin(); it != vec.end(); it++)
    {
-      strncpy(serverMsg.buffer, (char*)&*it, sizeof(Player));
+      it->serialize(serverMsg.buffer);
 
       for (it2 = vec.begin(); it2 != vec.end(); it2++)
