about summary refs log tree commit diff
path: root/datasrc
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2010-08-12 15:22:07 +0200
committeroy <Tom_Adams@web.de>2010-08-12 15:22:07 +0200
commit7503c642379cec7a2e14fe6a516d69a1f4d6d94a (patch)
tree7c10ada1c341c67669cccdc7ae6f261ae3d103a6 /datasrc
parent1cde96ef79a8418a9c34f355ec49d08f1e654213 (diff)
downloadzcatch-7503c642379cec7a2e14fe6a516d69a1f4d6d94a.tar.gz
zcatch-7503c642379cec7a2e14fe6a516d69a1f4d6d94a.zip
made unpacking of net strings more strict - prevents possible malformed output
Diffstat (limited to 'datasrc')
-rw-r--r--datasrc/datatypes.py8
-rw-r--r--datasrc/network.py18
2 files changed, 17 insertions, 9 deletions
diff --git a/datasrc/datatypes.py b/datasrc/datatypes.py
index e4459e48..4e293ab1 100644
--- a/datasrc/datatypes.py
+++ b/datasrc/datatypes.py
@@ -294,6 +294,14 @@ class NetString(NetVariable):
 	def emit_pack(self):
 		return ["pPacker->AddString(%s, -1);" % self.name]
 
+class NetStringStrict(NetVariable):
+	def emit_declaration(self):
+		return ["const char *%s;"%self.name]
+	def emit_unpack(self):
+		return ["pMsg->%s = pUnpacker->GetString(CUnpacker::SANITIZE_CC|CUnpacker::SKIP_START_WHITESPACES);" % self.name]
+	def emit_pack(self):
+		return ["pPacker->AddString(%s, -1);" % self.name]
+
 class NetIntAny(NetVariable):
 	def emit_declaration(self):
 		return ["int %s;"%self.name]
diff --git a/datasrc/network.py b/datasrc/network.py
index e31c0b3d..e01dba63 100644
--- a/datasrc/network.py
+++ b/datasrc/network.py
@@ -237,13 +237,13 @@ Messages = [
 	]),
 	
 	NetMessage("Sv_VoteOption", [
-		NetString("m_pCommand"),
+		NetStringStrict("m_pCommand"),
 	]),
 
 	NetMessage("Sv_VoteSet", [
 		NetIntRange("m_Timeout", 0, 60),
-		NetString("m_pDescription"),
-		NetString("m_pCommand"),
+		NetStringStrict("m_pDescription"),
+		NetStringStrict("m_pCommand"),
 	]),
 
 	NetMessage("Sv_VoteStatus", [
@@ -264,16 +264,16 @@ Messages = [
 	]),
 	
 	NetMessage("Cl_StartInfo", [
-		NetString("m_pName"),
-		NetString("m_pSkin"),
+		NetStringStrict("m_pName"),
+		NetStringStrict("m_pSkin"),
 		NetBool("m_UseCustomColor"),
 		NetIntAny("m_ColorBody"),
 		NetIntAny("m_ColorFeet"),
 	]),	
 
 	NetMessage("Cl_ChangeInfo", [
-		NetString("m_pName"),
-		NetString("m_pSkin"),
+		NetStringStrict("m_pName"),
+		NetStringStrict("m_pSkin"),
 		NetBool("m_UseCustomColor"),
 		NetIntAny("m_ColorBody"),
 		NetIntAny("m_ColorFeet"),
@@ -290,7 +290,7 @@ Messages = [
 	]),
 	
 	NetMessage("Cl_CallVote", [
-		NetString("m_Type"),
-		NetString("m_Value"),
+		NetStringStrict("m_Type"),
+		NetStringStrict("m_Value"),
 	]),
 ]