ソースを参照

!10717 丢弃异常的,大小超过2MB的数据包
Merge pull request !10717 from 80374463/ST2_0311_traceToServer

杨诗友80174847 5 ヶ月 前
コミット
41dabb8afb

+ 5 - 1
Module/mod_chromium/CWSCodec.cpp

@@ -521,8 +521,11 @@ namespace Chromium {
 		CSimpleStringA errorMsg = "";
 		//receivehexdump(msg.getPayload(), msg.getLength());
 
-		if (msg.getLength() < 12)	//End session len = 12
+		if (msg.getLength() < 12 || msg.getLength() > MAX_TRANSFER_LEN)	//End session len = 12
+		{
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("discard msg since msg length error, len:%d", msg.getLength());
 			return std::string(); // 丢弃消息
+		}
 
 		bool isSafe = false;
 		auto it = ConfigManager::getInstance().m_ws_infoArr;
@@ -534,6 +537,7 @@ namespace Chromium {
 		cJSON_AddNumberToObject(ret, "messageType", msg.getMessageType());
 		msgInfo.messageType = msg.getMessageType();
 		msgInfo.inner_transID = srcTransId;
+
 		msgInfo.msgBytes = msg.printfHEX();
 		switch (msg.getMessageType()) {
 		case MessageType::RequestAck: //PKT_TYPE_REQACK

+ 2 - 0
Module/mod_chromium/CWebsocketServer.cpp

@@ -1240,6 +1240,8 @@ namespace Chromium {
 
 	void CWebsocketServer::do_sendJson(std::string js, int messageType, int hdlID, unsigned int id, socket_msgInfo& msgInfo)
 	{
+		if (js.length() == 0)
+			return;
 		auto dst_js = restroreTransId(js);
 		js = dst_js.second;