From aa61a9346dfa4a72e5b6e9e3a15b0b259caf4aff Mon Sep 17 00:00:00 2001 From: Sylvain Chapeland Date: Fri, 6 Feb 2026 17:22:48 +0100 Subject: [PATCH] fix: stop assuming NUL-terminated input from DimRpcParallel::getString() --- src/DimServices/DimServices.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/DimServices/DimServices.cxx b/src/DimServices/DimServices.cxx index b837445..b3a535e 100644 --- a/src/DimServices/DimServices.cxx +++ b/src/DimServices/DimServices.cxx @@ -101,9 +101,15 @@ inline void rtrim(std::string &s) { void StringRpcServer::rpcHandler() { - alfDebugLog.info("Request received on %s : %s",mServiceName.c_str(),getString()); + // build a safe string from DIM input. Parent method getString() is unsafe, not guarateed to be nul-terminated + std::string inputString; + if (auto data = getString(); data && getSize() > 0) { + inputString.assign(data, getSize()); + } + + alfDebugLog.info("Request received on %s : %s",mServiceName.c_str(),inputString.c_str()); try { - auto returnValue = mCallback(std::string(getString())); + auto returnValue = mCallback(inputString); setDataString(makeSuccessString(returnValue), *this); rtrim(returnValue); alfDebugLog.info("Request completed: %s", returnValue.c_str());