From f6b0ba97031a9863a6c6f21ad4c6bfcdc81f0dd6 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Wed, 7 Feb 2024 10:27:03 +0100 Subject: [PATCH] Protect from getenv("HOME") returning nullptr (#907) (#908) * Protect from getenv("HOME") returning nullptr (e.g., in case running in systemd) * Write proper warning in Module.cpp Co-authored-by: Filip Leonarski --- slsDetectorSoftware/src/Module.cpp | 8 +++++++- slsSupportLib/include/sls/string_utils.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 0f8596036..f794a36d4 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -3334,7 +3334,13 @@ void Module::initializeModuleStructure(detectorType type) { shm()->numberOfModule.y = 0; shm()->controlPort = DEFAULT_TCP_CNTRL_PORTNO; shm()->stopPort = DEFAULT_TCP_STOP_PORTNO; - strcpy_safe(shm()->settingsDir, getenv("HOME")); + char *home_directory = getenv("HOME"); + if (home_directory != nullptr) + strcpy_safe(shm()->settingsDir, home_directory); + else { + strcpy_safe(shm()->settingsDir, ""); + LOG(logWARNING) << "HOME directory not set"; + } strcpy_safe(shm()->rxHostname, "none"); shm()->rxTCPPort = DEFAULT_TCP_RX_PORTNO + moduleIndex; shm()->useReceiverFlag = false; diff --git a/slsSupportLib/include/sls/string_utils.h b/slsSupportLib/include/sls/string_utils.h index eec1a0c08..86a5d0caf 100644 --- a/slsSupportLib/include/sls/string_utils.h +++ b/slsSupportLib/include/sls/string_utils.h @@ -20,6 +20,7 @@ Still this is better than strcpy and a buffer overflow... */ template void strcpy_safe(char (&destination)[array_size], const char *source) { + assert(source != nullptr); assert(array_size > strlen(source)); strncpy(destination, source, array_size - 1); destination[array_size - 1] = '\0';