Fixed missing null terminator in mpm_sample_client
authorGeorge Nash <george.nash@intel.com>
Tue, 4 Apr 2017 22:00:04 +0000 (15:00 -0700)
committerTodd Malsbary <todd.malsbary@intel.com>
Thu, 6 Apr 2017 18:31:26 +0000 (18:31 +0000)
The string in contained in the MPMMessage passed to the onCallback
funtion may not be null terminated.

This is accounted for when creating the message_char variable but
the message_char variable was not used when MPMAddDevice was called
causing a non-terminated string to be passed to the to the plugin.

Using the message_char variable with size+1 solved the missing null
terminated string issue.

Change-Id: If760cc77fba9fe46b191b3c5a7ec2abac9da63ac
Signed-off-by: George Nash <george.nash@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/18491
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Todd Malsbary <todd.malsbary@intel.com>
bridging/mpm_client/MPMSampleClient.cpp

index 08e2d8d..a38791e 100644 (file)
@@ -257,19 +257,19 @@ MPMCbResult onCallback(uint32_t msgType, MPMMessage message, size_t size, const
     log("Message from:", std::string(plugin_name), "\n");
     log("Interpreting payload as string:\n");
 
-    char* message_char = (char*) calloc(1, size+1);
+    char* message_char = (char*) calloc(1, size + 1);
     if (message_char == NULL)
     {
         log("Message_char is null\n");
         return MPM_CB_RESULT_ERROR;
     }
-    memset(message_char, 0, size+1);
+    memset(message_char, 0, size + 1);
     memcpy(message_char, message, size);
     log(std::string(message_char), "\n");
 
     if (msgType == MPM_SCAN && autoAddMode)
     {
-        MPMAddDevice(g_loadedPlugins[std::string(plugin_name)], message, size);
+        MPMAddDevice(g_loadedPlugins[std::string(plugin_name)], message_char, size + 1);
     }
     else if (msgType == MPM_ADD)
     {