about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/engine/shared/network_conn.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/engine/shared/network_conn.cpp b/src/engine/shared/network_conn.cpp
index 24c8f066..cd2df048 100644
--- a/src/engine/shared/network_conn.cpp
+++ b/src/engine/shared/network_conn.cpp
@@ -214,27 +214,25 @@ int CNetConnection::Feed(CNetPacketConstruct *pPacket, NETADDR *pAddr)
 				m_State = NET_CONNSTATE_ERROR;
 				m_RemoteClosed = 1;
 
-				if(!m_BlockCloseMsg)
+				char Str[128] = {0};
+				if(pPacket->m_DataSize > 1)
 				{
-					if(pPacket->m_DataSize)
-					{
-						// make sure to sanitize the error string form the other party
-						char Str[128];
-						if(pPacket->m_DataSize < 128)
-							str_copy(Str, (char *)pPacket->m_aChunkData, pPacket->m_DataSize);
-						else
-							str_copy(Str, (char *)pPacket->m_aChunkData, sizeof(Str));
-						str_sanitize_strong(Str);
-
-						// set the error string
-						SetError(Str);
-					}
+					// make sure to sanitize the error string form the other party
+					if(pPacket->m_DataSize < 128)
+						str_copy(Str, (char *)&pPacket->m_aChunkData[1], pPacket->m_DataSize);
 					else
-						SetError("No reason given");
+						str_copy(Str, (char *)&pPacket->m_aChunkData[1], sizeof(Str));
+					str_sanitize_strong(Str);
+				}
+
+				if(!m_BlockCloseMsg)
+				{
+					// set the error string
+					SetError(Str);
 				}
 
 				if(g_Config.m_Debug)
-					dbg_msg("conn", "closed reason='%s'", ErrorString());
+					dbg_msg("conn", "closed reason='%s'", Str);
 			}
 			return 0;
 		}