From 85a7f31e2122b52a913a36a8af66f393e99e9bf0 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Sat, 10 Dec 2016 12:11:19 +0200 Subject: Limit ZMQ RPC requests to 999999 bytes at CPP side. TODO: split requests at Python to smaller chunks. Change-Id: Ieaf477d2ed8264e30a8275a75d597fdc8858da79 Signed-off-by: Yaroslav Brustinov --- src/rpc-server/trex_rpc_req_resp_server.cpp | 6 ++++++ src/rpc-server/trex_rpc_req_resp_server.h | 1 + 2 files changed, 7 insertions(+) (limited to 'src/rpc-server') diff --git a/src/rpc-server/trex_rpc_req_resp_server.cpp b/src/rpc-server/trex_rpc_req_resp_server.cpp index 28bf1d80..729917c0 100644 --- a/src/rpc-server/trex_rpc_req_resp_server.cpp +++ b/src/rpc-server/trex_rpc_req_resp_server.cpp @@ -171,6 +171,12 @@ void TrexRpcServerReqRes::_stop_rpc_thread() { void TrexRpcServerReqRes::handle_request(const std::string &request) { std::string response; + if ( request.size() > MAX_RPC_MSG_LEN ) { + response = "Request is too large (" + std::to_string(request.size()) + " bytes). Consider splitting to smaller chunks."; + handle_server_error(response); + return; + } + process_request(request, response); zmq_send(m_socket, response.c_str(), response.size(), 0); diff --git a/src/rpc-server/trex_rpc_req_resp_server.h b/src/rpc-server/trex_rpc_req_resp_server.h index 92d51a2a..9a994044 100644 --- a/src/rpc-server/trex_rpc_req_resp_server.h +++ b/src/rpc-server/trex_rpc_req_resp_server.h @@ -53,6 +53,7 @@ protected: void *m_context; void *m_socket; + static const uint32_t MAX_RPC_MSG_LEN = 999999; }; /** -- cgit 1.2.3-korg