From d1bb9df0f9ba55db5f5ce55a9437b3971b62a3fc Mon Sep 17 00:00:00 2001 From: BoB13-Matter Date: Tue, 1 Oct 2024 06:22:42 +0900 Subject: [PATCH] Fix null pointer issue in CHIPMemString (#35840) --- src/lib/support/CHIPMemString.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib/support/CHIPMemString.h b/src/lib/support/CHIPMemString.h index 3b74acdbcaf195..884c79d63e9bff 100644 --- a/src/lib/support/CHIPMemString.h +++ b/src/lib/support/CHIPMemString.h @@ -121,12 +121,20 @@ inline void CopyString(char (&dest)[N], ByteSpan source) */ inline void CopyString(char * dest, size_t destLength, CharSpan source) { - if (dest && destLength) + if ((dest == nullptr) || (destLength == 0)) { - size_t maxChars = std::min(destLength - 1, source.size()); - memcpy(dest, source.data(), maxChars); - dest[maxChars] = '\0'; + return; // no space to copy anything, not even a null terminator } + + if (source.empty()) + { + *dest = '\0'; // just a null terminator, we are copying empty data + return; + } + + size_t maxChars = std::min(destLength - 1, source.size()); + memcpy(dest, source.data(), maxChars); + dest[maxChars] = '\0'; } /**