[IOT-1204] Add zero terminator before logging
authorDan Mihai <Daniel.Mihai@microsoft.com>
Wed, 27 Jul 2016 22:13:20 +0000 (15:13 -0700)
committerRandeep Singh <randeep.s@samsung.com>
Thu, 11 Aug 2016 04:17:28 +0000 (04:17 +0000)
Change-Id: I8a8b94aad4b00e22a59a728a2f6802a3d18bff24
Signed-off-by: Dan Mihai <Daniel.Mihai@microsoft.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/9851
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Randeep Singh <randeep.s@samsung.com>
resource/csdk/stack/include/payload_logging.h

index 44371c7..bedd9b6 100644 (file)
@@ -34,6 +34,7 @@
 #endif
 #include <inttypes.h>
 #include "rdpayload.h"
+#include "oic_malloc.h"
 
 #ifdef __cplusplus
 extern "C"
@@ -393,8 +394,23 @@ INLINE_API void OCPayloadLogPresence(LogLevel level, OCPresencePayload* payload)
 
 INLINE_API void OCPayloadLogSecurity(LogLevel level, OCSecurityPayload* payload)
 {
+    size_t payloadSize = payload->payloadSize;
     OIC_LOG(level, PL_TAG, "Payload Type: Security");
-    OIC_LOG_V(level, PL_TAG, "\tSecurity Data: %s", payload->securityData);
+
+    if (payloadSize > 0)
+    {
+        // Add a zero-character string terminator.
+        char *securityData = (char *)OICMalloc(payloadSize + 1);
+        
+        if (securityData)
+        {
+            memcpy(securityData, payload->securityData, payloadSize);
+            assert(securityData[payloadSize - 1] != '\0');
+            securityData[payloadSize] = '\0';
+            OIC_LOG_V(level, PL_TAG, "\tSecurity Data: %s", securityData);
+            OICFree(securityData);
+        }
+    }
 }
 
 #if defined(RD_CLIENT) || defined(RD_SERVER)