diff --git a/server/gameserver/GCListener.cc b/server/gameserver/GCListener.cc index fa03793..7ad4156 100644 --- a/server/gameserver/GCListener.cc +++ b/server/gameserver/GCListener.cc @@ -100,7 +100,7 @@ public: header.size = ((header.size & 0x00FF) << 8) + ((header.size & 0xFF00) >> 8); - if (buflen - offset < sizeof(ClientPktHeader) + header.size) { + if (buflen - offset < sizeof(ClientPktHeader) + header.size - 4) { break; } header.size -= 4; diff --git a/server/gameserver/global.cc b/server/gameserver/global.cc index ed1ba1d..440c3df 100755 --- a/server/gameserver/global.cc +++ b/server/gameserver/global.cc @@ -35,6 +35,9 @@ bool CustomParser(f8::MsgHdr& hdr, google::protobuf::Message* msg) if ((size_t)hdr.offset + fixed_len > (size_t)hdr.buflen) { abort(); } + std::string val(&hdr.buf[hdr.offset], fixed_len); + reflection->SetString(msg, field_desc, val); + hdr.offset += val.size() + 1; } else { if ((size_t)hdr.offset > (size_t)hdr.buflen) { abort(); diff --git a/server/gameserver/playermgr.cc b/server/gameserver/playermgr.cc index f1c5ac5..0f51920 100644 --- a/server/gameserver/playermgr.cc +++ b/server/gameserver/playermgr.cc @@ -1,6 +1,7 @@ #include "precompile.h" #include "playermgr.h" +#include "cs_proto.pb.h" void PlayerMgr::Init() { @@ -14,7 +15,7 @@ void PlayerMgr::UnInit() void PlayerMgr::_CMAuthSession(f8::MsgHdr& hdr, const cs::CMAuthSession& msg) { - + std::string digest = msg.digest(); } int PlayerMgr::OnlineNum() diff --git a/server/tools/protobuild/cs_msgid.proto b/server/tools/protobuild/cs_msgid.proto index b67751b..9d2ba1e 100644 --- a/server/tools/protobuild/cs_msgid.proto +++ b/server/tools/protobuild/cs_msgid.proto @@ -1,7 +1,7 @@ package cs; //消息id定义 -enum CMessageId_e +enum CMMessageId_e { _CMAuthSession = 0x1ED; }