diff options
| author | oy <Tom_Adams@web.de> | 2010-08-12 15:22:07 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-08-12 15:22:07 +0200 |
| commit | 7503c642379cec7a2e14fe6a516d69a1f4d6d94a (patch) | |
| tree | 7c10ada1c341c67669cccdc7ae6f261ae3d103a6 /datasrc | |
| parent | 1cde96ef79a8418a9c34f355ec49d08f1e654213 (diff) | |
| download | zcatch-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.py | 8 | ||||
| -rw-r--r-- | datasrc/network.py | 18 |
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"), ]), ] |