From e4f2170ea6969ff9f062cce6bf43bac8e85e807c Mon Sep 17 00:00:00 2001 From: George Sedov <george.sedov@desy.de> Date: Mon, 7 Feb 2022 16:54:28 +0100 Subject: [PATCH] fix cpp warnings, add doxygen to docker --- common/cpp/include/asapo/common/networking.h | 14 ++++++++------ consumer/api/cpp/src/fabric_consumer_client.cpp | 3 ++- consumer/api/cpp/src/tcp_consumer_client.cpp | 3 ++- deploy/build_env/services-linux/Dockerfile | 2 ++ producer/api/cpp/src/producer_impl.cpp | 4 ++-- .../src/request_handler/requests_dispatcher.cpp | 6 ++++-- 6 files changed, 20 insertions(+), 12 deletions(-) diff --git a/common/cpp/include/asapo/common/networking.h b/common/cpp/include/asapo/common/networking.h index d814a88df..4e85cd93f 100644 --- a/common/cpp/include/asapo/common/networking.h +++ b/common/cpp/include/asapo/common/networking.h @@ -93,18 +93,20 @@ struct GenericRequestHeader { op_code = header.op_code, data_id = header.data_id, data_size = header.data_size, meta_size = header.meta_size, memcpy(custom_data, header.custom_data, kNCustomParams * sizeof(uint64_t)), memcpy(message, header.message, kMaxMessageSize); - strncpy(stream, header.stream, kMaxMessageSize); - strncpy(api_version, header.api_version, kMaxVersionSize); + memcpy(stream, header.stream, sizeof(stream)); + memcpy(api_version, header.api_version, sizeof(api_version)); return *this; }; /* Keep in mind that the message here is just strncpy'ed, you can change the message later */ GenericRequestHeader(Opcode i_op_code = kOpcodeUnknownOp, uint64_t i_data_id = 0, uint64_t i_data_size = 0, uint64_t i_meta_size = 0, const std::string &i_message = "", const std::string &i_stream = "") : - op_code{i_op_code}, data_id{i_data_id}, data_size{i_data_size}, meta_size{i_meta_size} { - strncpy(message, i_message.c_str(), kMaxMessageSize); - strncpy(stream, i_stream.c_str(), kMaxMessageSize); - strncpy(api_version, "v0.0", kMaxVersionSize); + op_code{i_op_code}, data_id{i_data_id}, data_size{i_data_size}, meta_size{i_meta_size}, custom_data{kDefaultIngestMode, 0, 0} { + strncpy(message, i_message.c_str(), kMaxMessageSize - 1); + message[kMaxMessageSize - 1] = '\0'; + strncpy(stream, i_stream.c_str(), kMaxMessageSize - 1); + stream[kMaxMessageSize - 1] = '\0'; + strcpy(api_version, "v0.0"); } Opcode op_code; diff --git a/consumer/api/cpp/src/fabric_consumer_client.cpp b/consumer/api/cpp/src/fabric_consumer_client.cpp index 58e2776cb..eddd8579c 100644 --- a/consumer/api/cpp/src/fabric_consumer_client.cpp +++ b/consumer/api/cpp/src/fabric_consumer_client.cpp @@ -34,7 +34,8 @@ Error FabricConsumerClient::GetData(const MessageMeta* info, MessageData* data) } GenericRequestHeader request_header{kOpcodeGetBufferData, info->buf_id, info->size}; - strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); + strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize - 1); + request_header.api_version[kMaxVersionSize - 1] = '\0'; memcpy(request_header.message, mr->GetDetails(), sizeof(fabric::MemoryRegionDetails)); GenericNetworkResponse response{}; diff --git a/consumer/api/cpp/src/tcp_consumer_client.cpp b/consumer/api/cpp/src/tcp_consumer_client.cpp index 2f5ea5396..6847f9258 100644 --- a/consumer/api/cpp/src/tcp_consumer_client.cpp +++ b/consumer/api/cpp/src/tcp_consumer_client.cpp @@ -14,7 +14,8 @@ TcpConsumerClient::TcpConsumerClient() : io__{GenerateDefaultIO()}, connection_p Error TcpConsumerClient::SendGetDataRequest(SocketDescriptor sd, const MessageMeta* info) const noexcept { Error err; GenericRequestHeader request_header{kOpcodeGetBufferData, info->buf_id, info->size}; - strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize); + strncpy(request_header.api_version, kConsumerProtocol.GetRdsVersion().c_str(), kMaxVersionSize - 1); + request_header.api_version[kMaxVersionSize - 1] = '\0'; io__->Send(sd, &request_header, sizeof(request_header), &err); if (err) { connection_pool__->ReleaseConnection(sd); diff --git a/deploy/build_env/services-linux/Dockerfile b/deploy/build_env/services-linux/Dockerfile index 4408f0b84..28a824f57 100644 --- a/deploy/build_env/services-linux/Dockerfile +++ b/deploy/build_env/services-linux/Dockerfile @@ -29,6 +29,8 @@ RUN set -eux; \ iproute2 \ nginx-light \ mongodb-org-server \ + graphviz \ + doxygen \ ; \ apt-get install -y --no-install-recommends cmake/bullseye-backports; \ DEBIAN_FRONTEND=noninteractive apt-get install -y slapd; \ diff --git a/producer/api/cpp/src/producer_impl.cpp b/producer/api/cpp/src/producer_impl.cpp index a0b68f070..2b461a31a 100644 --- a/producer/api/cpp/src/producer_impl.cpp +++ b/producer/api/cpp/src/producer_impl.cpp @@ -491,7 +491,7 @@ Error ProducerImpl::GetServerVersionInfo(std::string* server_info, } Error ProducerImpl::DeleteStream(std::string stream, uint64_t timeout_ms, DeleteStreamOptions options) const { - auto header = GenericRequestHeader{kOpcodeDeleteStream, 0, 0, 0, "", stream}; + GenericRequestHeader header{kOpcodeDeleteStream, 0, 0, 0, "", stream}; header.custom_data[0] = options.Encode(); Error err; @@ -542,7 +542,7 @@ std::string ProducerImpl::GetBeamtimeMeta(uint64_t timeout_ms, Error* err) const } std::string ProducerImpl::GetMeta(const std::string& stream, uint64_t timeout_ms, Error* err) const { - auto header = GenericRequestHeader{kOpcodeGetMeta, 0, 0, 0, "", stream}; + GenericRequestHeader header{kOpcodeGetMeta, 0, 0, 0, "", stream}; auto response = BlockingRequest(std::move(header), timeout_ms, err); if (*err) { return ""; diff --git a/receiver/src/request_handler/requests_dispatcher.cpp b/receiver/src/request_handler/requests_dispatcher.cpp index e416ede4b..bd06ba328 100644 --- a/receiver/src/request_handler/requests_dispatcher.cpp +++ b/receiver/src/request_handler/requests_dispatcher.cpp @@ -41,13 +41,15 @@ GenericNetworkResponse RequestsDispatcher::CreateResponseToRequest(const std::un generic_response.error_code = GetNetworkCodeFromError(handle_error); strcpy(generic_response.message, ""); if (handle_error) { - strncpy(generic_response.message, handle_error->Explain().c_str(), kMaxMessageSize); + strncpy(generic_response.message, handle_error->Explain().c_str(), kMaxMessageSize - 1); + generic_response.message[kMaxMessageSize - 1] = '\0'; } if (request->GetResponseMessage().size() > 0) { if (request->GetResponseMessageType() == ResponseMessageType::kWarning) { generic_response.error_code = kNetErrorWarning; } - strncpy(generic_response.message, request->GetResponseMessage().c_str(), kMaxMessageSize); + strncpy(generic_response.message, request->GetResponseMessage().c_str(), kMaxMessageSize - 1); + generic_response.message[kMaxMessageSize - 1] = '\0'; } return generic_response; } -- GitLab