From a7cf432563ad35ec6d3eb3b520d3fbacad365651 Mon Sep 17 00:00:00 2001 From: Lennart Nachtigall Date: Fri, 21 Aug 2026 16:07:31 +0200 Subject: [PATCH] String SDO reads need to check for zero terminators --- src/internal/soem/soem_backend.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/internal/soem/soem_backend.cpp b/src/internal/soem/soem_backend.cpp index 9b75f76..6318105 100644 --- a/src/internal/soem/soem_backend.cpp +++ b/src/internal/soem/soem_backend.cpp @@ -1256,7 +1256,9 @@ SDOReadValue EthercatBus::sdo_read(const DeviceId devi } // Create an std::string out of it - return SDOReadValue(result, std::string(data.begin(), data.begin() + result.actual_size_read)); + const std::string_view raw{ data.data(), std::min(result.actual_size_read, data.size()) }; + const auto text = raw.substr(0, raw.find('\0')); + return SDOReadValue(result, std::string(text)); } template SDOReadValue EthercatBus::sdo_read(DeviceId, SDOIndex, SDOSubIndex);